Обновление экземпляра, зарегистрированного в контейнере Unity - PullRequest
2 голосов
/ 10 июля 2011

Я использую Unity для внедрения зависимостей и имею экземпляр класса Config, который реализует IConfig, зарегистрированный в контейнере Unity.

IConfiguration config = new Configuration();

unityContainer.RegisterInstance<IConfiguration>(config);

Когда приложение работает и пользователь загружает сохраненную конфигурацию,хотел бы обновить экземпляр, хранящийся в Unity, с загруженным объектом конфигурации.Например, что-то вроде кода псевдо ниже

IConfiguration loadedConfig = FileLoadService.Load(filepath);
unityContainer.Instance = loadedConfig;

Возможно ли это?

1 Ответ

2 голосов
/ 10 июля 2011

Вы можете просто перерегистрировать экземпляр, позвонив

unityContainer.RegisterInstance<IConfiguration>(config);

Но лучшим решением было бы изменить логику FileLoadServce.Load(filepath), чтобы она обновляла значения существующего объекта конфигурации. Преимущество этого решения заключается в том, что уже разрешенные ссылки (путем вызова unityContainer.Resolve<IConfiguration>()) на этот объект конфигурации также обновляются.

...