我更新的一些代码使用Unity,这对我来说有点新鲜,虽然我得到了一般原则。
一个界面注册如下:
_container.RegisterType<ISomething, Something>(
new ContainerControlledLifetimeManager(),
new InjectionConstructor(
new ResolvedParameter<ITypeA>(),
new ResolvedParameter<ITypeB>(),
_container.Resolve<ITypeC>()
)
);
我对new ResolvedParameter<ITypeB>()
和_container.Resolve<ITypeC>()
之间的区别感到困惑 - 是否有人能够更清楚地知道差异是什么以及何时可以使用/首选?
答案 0 :(得分:2)
每当您解决ISomething
时,新的ITypeA
和新的ITypeB
实施都会实例化(假设它们未注册为单例)并传递给构造函数。但对于ITypeC
,您在调用_container.Resolve<ITypeC>()
时会创建确切的实例。
请参阅相关问题:Injecting new constructor parameters every time a type is resolved using unity