配置构造函数参数时,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