我是Blazor的新手,一直在寻找一种在服务器端Blazor App中在组件之间共享类的实例的方法。
到目前为止,我所做的大多数搜索建议通过单例服务进行。
我有一个数据库类,几乎所有组件都将使用。
我想在webapp启动时初始化它,并在所有组件之间共享这个新实例。
我创建了一个AppData类:
public class AppData
{
public Database Database { get; set; }
}
我已将类作为单例添加到Startup.cs中。
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<Data.AppData>();
}
这时,是否有一种方法可以在启动时设置数据库属性,例如AppData.Database = new Database(...),以便在其他组件开始使用它时就已经设置好了?
作为后续问题,我还向AppData类添加了一个属性以用作一种全局变量,以便可以将数据从一页传递到另一页
public class AppData
{
public WorkflowTask Task { get; set; }
public Database Database { get; set; }
}
我不希望AppData成为全局变量的垃圾场,只是为了让我可以在组件之间传递对象/基元-我只是犯了错吗?有标准的方法吗?
非常感谢
尼克
答案 0 :(得分:0)
只需为您的类创建一个构造函数:
public AppData()
{
// perform any initializations here
Database = new Database();
}