配置构造函数参数时,IUnityContainer.Resolve() 和 ResolvedParameter 有什么区别?
What's the difference between IUnityContainer.Resolve() and ResolvedParameter when configuring constructor arguments?
我正在更新的一些代码使用了 Unity,这对我来说有点新,但我了解了一般原则。
一个接口是这样注册的:
_container.RegisterType<ISomething, Something>(
new ContainerControlledLifetimeManager(),
new InjectionConstructor(
new ResolvedParameter<ITypeA>(),
new ResolvedParameter<ITypeB>(),
_container.Resolve<ITypeC>()
)
);
我对 new ResolvedParameter<ITypeB>()
和 _container.Resolve<ITypeC>()
之间的区别感到困惑 - 有人可以更清楚地说明区别是什么以及它们什么时候可能是 used/preferred 吗?
每次解析 ISomething
时,都会实例化新的 ITypeA
和新的 ITypeB
实现 (假设它们未注册为单例) 和传递给构造函数。但是对于 ITypeC
你有调用 _container.Resolve<ITypeC>()
.
时创建的确切实例
查看相关问题:Injecting new constructor parameters every time a type is resolved using unity
我正在更新的一些代码使用了 Unity,这对我来说有点新,但我了解了一般原则。
一个接口是这样注册的:
_container.RegisterType<ISomething, Something>(
new ContainerControlledLifetimeManager(),
new InjectionConstructor(
new ResolvedParameter<ITypeA>(),
new ResolvedParameter<ITypeB>(),
_container.Resolve<ITypeC>()
)
);
我对 new ResolvedParameter<ITypeB>()
和 _container.Resolve<ITypeC>()
之间的区别感到困惑 - 有人可以更清楚地说明区别是什么以及它们什么时候可能是 used/preferred 吗?
每次解析 ISomething
时,都会实例化新的 ITypeA
和新的 ITypeB
实现 (假设它们未注册为单例) 和传递给构造函数。但是对于 ITypeC
你有调用 _container.Resolve<ITypeC>()
.
查看相关问题:Injecting new constructor parameters every time a type is resolved using unity