我有一个带有一些属性的上下文界面,我希望在解析界面时自动设置这些属性。这是界面和类。
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来完成?
答案 0 :(得分:2)
您可以使用Dependency
属性来标记要注入的属性。
public class AdapterContext
{
[Dependency]
public IFoo Foo { get; set; }
[Dependency]
public IBar Bar { get; set; }
}
我不推荐这个解决方案。我总是使用构造函数注入并配置包含模拟依赖项的测试的专用容器。