【发布时间】:2018-11-13 18:48:50
【问题描述】:
我在运行时生成一个单例
public void ConfigureServices(IServiceCollection services)
{
var applications = Utils.generateApplications()
services.AddSingleton<ApplicationModel[]>(applications);
services.AddMvc();
}
我以后如何使用全新的ApplicationModel[] 更新这个注入ApplicationModel[] 的依赖项。我的应用程序中有一个功能,用户可以使用它来触发应用程序上的数据刷新,但是如何更新底层注入的 Singleton,以便所有未来的注入都使用更新后的应用程序?我有一个函数Utils.generateApplications(),它获取最新的应用程序列表并返回ApplicationModel[]。如果有意义的话,我如何用一个新对象覆盖旧注入的 Singleton 以注入到未来的调用中?
我有一些代码:
public void UpdateData()
{
var applications = Utils.generateApplications()
//How do I set applications to replace the injected singleton for all future injections?
}
【问题讨论】:
-
似乎在
ApplicationModel[]周围放置一个包装器会容易得多,使用您的数组作为属性之一创建一个新类。然后你的所有代码都得到相同的单例,但你可以随意更新属性(只是要注意线程安全)
标签: c# .net-core asp.net-core-2.0