更新在 Unity 容器中注册的实例

Kil*_*are 5 c# unity-container

我使用 Unity 进行依赖项注入,并拥有一个 Config 类的实例,该类 Config 实现了在 Unity 容器中注册的 IConfig。

IConfiguration config = new Configuration();

unityContainer.RegisterInstance<IConfiguration>(config);
Run Code Online (Sandbox Code Playgroud)

当应用程序运行并且用户加载保存的配置时,我想使用加载的配置对象更新存储在 Unity 中的实例。例如下面的伪代码

IConfiguration loadedConfig = FileLoadService.Load(filepath);
unityContainer.Instance = loadedConfig;
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Pet*_*ter 5

您可以通过调用重新注册实例

unityContainer.RegisterInstance<IConfiguration>(config);
Run Code Online (Sandbox Code Playgroud)

但更好的解决方案是更改您的FileLoadServce.Load(filepath)逻辑,以便它更新现有配置对象的值。此解决方案的好处是,已解析的unityContainer.Resolve<IConfiguration>()对此配置对象的引用(通过调用)也会更新。