我是一名WPF开发人员。我是开发ERP应用程序的团队的一员。我想将该应用程序转换为Blazor web服务器。我是网络技术和Blazor的新手。
我们有一个静态类,它有近50个属性(只有属性,没有方法(,用于在应用程序级别存储某些数据。我们在用户登录时设置这些属性值。之后,我们在任何需要的地方使用这些值。
现在我的问题是,如何在Blazor中使用这个类?我在网上搜索了一下,找到了两种方法。
- 添加单例服务。在任何需要的地方注入它,并使用它的值
- 在任何需要的地方直接使用静态类,而不需要注入服务
在我的情况下,哪种方法是最好的,为什么?
这两种方法在"语法上"都是正确的,但依赖项注入将为您提供最佳的灵活性。自从向.NET Core过渡以来,DI集成在框架中,因此实现它非常简单(尽管一开始很难控制它(。
不管怎样,读到你的问题,你似乎假装存储了一些与用户相关的数据供以后使用。如果是这种情况,那么singleton就不是最好的选择,因为您现在处于多用户环境中,所有用户每次都会访问同一个实例。
您应该创建一个为每个用户创建该类的工厂,然后在DI上将其注册为作用域,因为这种对象会持续用户的所有会话。
在这里,你会发现一份来自微软的有用文档,介绍你试图实现的目标,包括模式和实践:
配置依赖注入
向致以最良好的问候