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

本文关键字:设置 属性 Unity 依赖 注入 使用 | 更新日期: 2023-09-27 18:10:18

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

public interface IAdapterContext
{
    IFoo Foo { get; }
    IBar Bar { get; }
}
public class AdapterContext
{
    public IFoo Foo { get; set; } 
    public IBar Bar { get; set; }
}

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

一种解决方案是在类中添加一个接收所有值的构造函数,但我宁愿不这样做,因为我还想使用默认构造函数以方便测试。同时设置默认和非默认只是为了满足统一,这对我来说是不合适的。

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

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

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

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

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

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