使用Unity依赖注入自动设置属性值

时间:2014-06-24 18:15:43

标签: c# unity-container

我有一个带有一些属性的上下文界面,我希望在解析界面时自动设置这些属性。这是界面和类。

public interface IAdapterContext
{
    IFoo Foo { get; }

    IBar Bar { get; }
}

public class AdapterContext
{
    public IFoo Foo { get; set; } 

    public IBar Bar { get; set; }
}

接口成功解析为类,但所有实例成员都为null。相应的实例成员接口已注册。

一种解决方案是在接收所有值的类中添加构造函数,但我不想这样做,因为我还想要默认构造函数以便于测试。同时具有默认和非默认以满足统一并不适合我。

另一个解决方案是使用InjectionProperty类,但这总体上是一个比添加构造函数更复杂的解决方案。它还将属性名称与实际类解耦,后者在重构期间可能会中断。

unity是否支持已实现接口的自动设置属性值,还是总是需要通过构造函数/ InjectionProperty来完成?

1 个答案:

答案 0 :(得分:2)

您可以使用Dependency属性来标记要注入的属性。

public class AdapterContext
{
    [Dependency]
    public IFoo Foo { get; set; } 

    [Dependency]
    public IBar Bar { get; set; }
}

我不推荐这个解决方案。我总是使用构造函数注入并配置包含模拟依赖项的测试的专用容器。