如何使用Unity DI仅向构造函数注入一个对象。 例如:
public class MyClass{
public MyClass(ILog logger, IProvider provider, IResolver resolver, ItemTypeEnum itemType)
{
//.... initializing everything
}
public ItemTypeEnum ItemType { get; set;}
//....methods where I will use this itemKind
}
我想只将itemType值注入构造函数,在实现中使用此itemType取决于此枚举的值。
答案 0 :(得分:0)
免责声明:我可能错误地提出了这个问题,但对我来说只注入所有依赖但 itemType
才有意义,而不是相反。
最简单的选择是使用MyClassFactory
方法创建CreateMyClass( ItemTypeEnum itemType )
。详情见over there ...
答案 1 :(得分:0)
您可以使用InjectionConstructor
并在解决过程中提供参数。示例如下:
container.RegisterType<ILog, Log>();
container.RegisterType<IResolver, Resolver>();
container.RegisterType<IProvider, Provider>();
container.RegisterType<MyClass>(new InjectionConstructor(
new ResolvedParameter<ILog>(),
new ResolvedParameter<IProvider>(),
new ResolvedParameter<IResolver>(),
typeof(ItemTypeEnum)));
MyClass mc = container.Resolve<MyClass>(new ParameterOverride("itemType", ItemTypeEnum.Value));