配置构造函数参数时,IUnityContainer.Resolve()和ResolvedParameter之间的区别是什么?

时间:2017-03-07 17:50:50

标签: unity-container

我更新的一些代码使用Unity,这对我来说有点新鲜,虽然我得到了一般原则。

一个界面注册如下:

          _container.RegisterType<ISomething, Something>(
            new ContainerControlledLifetimeManager(),
            new InjectionConstructor(
                new ResolvedParameter<ITypeA>(),
                new ResolvedParameter<ITypeB>(),
                _container.Resolve<ITypeC>()
            )
          );

我对new ResolvedParameter<ITypeB>()_container.Resolve<ITypeC>()之间的区别感到困惑 - 是否有人能够更清楚地知道差异是什么以及何时可以使用/首选?

1 个答案:

答案 0 :(得分:2)

每当您解决ISomething时,新的ITypeA和新的ITypeB实施都会实例化(假设它们未注册为单例)并传递给构造函数。但对于ITypeC,您在调用_container.Resolve<ITypeC>()时会创建确切的实例。

请参阅相关问题:Injecting new constructor parameters every time a type is resolved using unity