如何使用统一DI将一个对象注入构造函数

时间:2018-02-07 14:48:35

标签: c# c#-4.0 unity-container

如何使用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取决于此枚举的值。

2 个答案:

答案 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));