Можно лениво разрешить компонент в замок Виндзор путем регистрации LazyOfTComponentLoader в контейнере и решение Lazy<T>
как указано here:Автоматически лениво разрешающие компоненты в замок Виндзор
container.Register(
Component.For<ILazyComponentLoader>().ImplementedBy<LazyOfTComponentLoader>(),
Component.For<ISomeService>().ImplementedBy<ServiceImpl>().LifestyleTransient()
);
var lazy = container.Resolve<Lazy<ISomeService>>();
lazy.Value.DoSomething();
Тем не менее, можно ли регистр компонент в контейнере, так что он равен всегда разрешен как Lazy<T>
без необходимости указания «Ленивый» в разрешении?
В частности, мне интересно, как вводить ленивые компоненты в контроллеры в проекте MVC при использовании инъекции конструктора.
EDIT: Вы можете указать Lazy<ISomeService> someService
в качестве параметра в конструкторе контроллера, как можно видеть here. Однако существует ли способ гарантировать, что компонент решается лениво через процесс регистрации?