Blazor-使用服务在组件之间共享数据

时间:2020-06-02 13:20:57

标签: blazor

我是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成为全局变量的垃圾场,只是为了让我可以在组件之间传递对象/基元-我只是犯了错吗?有标准的方法吗?

非常感谢

尼克

1 个答案:

答案 0 :(得分:0)

只需为您的类创建一个构造函数:

public AppData()
{
    // perform any initializations here
    Database = new Database();
}