首页 > 解决方案 > unity injectionconstructor vs injectionfactory 懒惰

问题描述

我有这样的注册:

Container.RegisterType<SOMETYPE>(new ContainerControlledLifetimeManager(), new InjectionConstructor(Container.ResolveAll<ITYPE>())); <---

什么时候Container.ResolveAll<ITYPE>()会发生?在注册期间还是第一次打电话时?

InjectionConstructorvs之间有主要区别InjectionFactory吗?

标签: c#.netunity-container

解决方案


什么时候Container.ResolveAll<ITYPE>()会发生?在注册期间还是第一次打电话时?

在注册时,即当您调用RegisterType并传递InjectionConstructor给它时。Container.ResolveAll<ITYPE>()InjectionConstructor初始化和RegisterType调用方法之前调用。

AnInjectionFactory接受一个工厂,该工厂Func<IUnityContainer, object>在从容器中解析对象时对其进行初始化:

Container.RegisterType<SOMETYPE>(new ContainerControlledLifetimeManager(), new InjectionFactory(c => c.ResolveAll<ITYPE>()));

因此,使用 an InjectionConstructor, an objectITYPE在这种情况下为 an )在注册时创建,使用InjectionFactorya Func<IUnityContainer, object>(在这种情况下实现返回 an ITYPE)在注册时创建。


推荐阅读