Последняя версия RegisterInstance в Unity - PullRequest
3 голосов
/ 22 марта 2011

В нашем проекте мы используем Unity как инфраструктуру внедрения зависимостей.Теперь я столкнулся с ситуацией, когда мне нужна поздняя версия IUnityContainer.RegisterInstance().

. В ninject код, который я пытаюсь сделать, будет выглядеть примерно так:

this.Bind<IMyInterface>().ToMethod(context => GetMyObjectLateBound());

Однако в Unity я пока не нашел способа сделать это.

Причина, по которой мне это нужно, заключается в том, что Экземпляр IMyInterface еще не создан к тому времени, что связывание происходит, и создание объекта также не обрабатывается Unity (и я не могу заменить это в ближайшее время).

1 Ответ

4 голосов
/ 22 марта 2011

Unity поддерживает Lazy.Вам нужно добавить следующее расширение к единице:

unityContainer.AddNewExtension<LazySupportExtension>();

, тогда вы можете сделать следующее:

unityContainer.RegisterType<IComponent, Component1>(); 
var lazyComponent = unityContainer.Resolve<Lazy<IComponent>>();

Надеюсь, это поможет.

...