我有一个关于autofac的问题。代码:
public interface IA
{
void DoSmth();
}
public interface IB
{
MyClassType SomeProperty { get; }
}
public class C : IA, IB
{
public C (MyClassType value)
{
SomeProperty = value;
}
void DoSmth()
{
//realization
}
MyClassType SomeProperty { get; }
}
builder.RegisterType<C>().As<IA>().InstancePerLifetimeScope();
builder.RegisterType<MyClassType>();
autofac是否会从未注册的接口初始化属性?
答案 0 :(得分:1)
在您的情况下,someProperty
是一个只读属性,由C
的构造函数初始化。
someProperty
属性的值将使用C
的构造函数注入。
顺便说一句, Autofac 默认情况下不会注入读/写属性。如果需要注入属性,则必须使用PropertiesAutoWired
方法注册类型。
builder.RegisterType<C>().PropertiesAutowired();
有关详细信息,请参阅文档: Property and Method Injection