在Blazor中,可以使用@inject指令将服务添加到组件中,以便在使用时注入。在这种情况下,我们可以注入数据服务,该数据服务用于初始化视图模型。
下面是一个简单的示例,展示如何在Blazor中通过注入数据服务来初始化视图模型:
public class DataService
{
public async Task GetNextId()
{
// 获取下一个id
var id = await Task.FromResult(1);
return id;
}
}
public class ViewModel
{
public int Id { get; set; }
public ViewModel(DataService dataService)
{
Id = dataService.GetNextId().Result;
}
}
@inject DataService DataService
@inject ViewModel ViewModel
Id: @ViewModel.Id
@code {
protected override void OnInitialized()
{
base.OnInitialized();
var viewModel = new ViewModel(DataService);
ViewModel = viewModel;
}
}
在这个例子中,视图模型依赖于数据服务,以获取正确的状态。注入的数据服务可在组件中使用,并在初始化视图模型时传递给它。