如果寄存器类型如下,返回autofac会是什么?

时间:2015-12-01 13:13:42

标签: c# interface autofac

我有一个关于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是否会从未注册的接口初始化属性?

1 个答案:

答案 0 :(得分:1)

在您的情况下,someProperty是一个只读属性,由C的构造函数初始化。

someProperty属性的值将使用C的构造函数注入。

顺便说一句, Autofac 默认情况下不会注入读/写属性。如果需要注入属性,则必须使用PropertiesAutoWired方法注册类型。

builder.RegisterType<C>().PropertiesAutowired();

有关详细信息,请参阅文档: Property and Method Injection