配置构造函数参数时,IUnityContainer.Resolve() 和 SolveParameter 有什么区别?



我正在更新的一些代码使用统一,尽管我得到了一般原则。

这样的一个接口被注册:

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

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

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

请参阅相关问题:每次使用Unity

解决类型时,注入新的构造函数参数

最新更新