如果寄存器按以下方式键入,将返回autofac

本文关键字:返回 autofac 方式键 寄存器 如果 | 更新日期: 2023-09-27 18:25:09

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

如果寄存器按以下方式键入,将返回autofac

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

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

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

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

有关详细信息,请参阅文档:属性和方法注入