Autofac入门之依赖注入

这里主要学习一下Autofac的依赖注入方式

默认构造函数注入

class AutofacInjectTest
{
    static void Main(string[] args)
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<A>();
        builder.RegisterType<B>();

        var container = builder.Build();
        var a = container.Resolve<A>(); //A的构造方法需要参数b,但是这里不需要做更多地操作
    }
}
class A
{
    private B _b;

    public A(B b)
    {
        this._b = b;
    }
}

class B { }
class AutofacInjectTest
{
    static void Main(string[] args)
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<A>();
        builder.RegisterType<B>();

        var container = builder.Build();
        var a = container.Resolve<A>(); //A的构造方法需要参数b,但是这里不需要做更多地操作
    }
}
class A
{
    private B _b;

    public A(B b)
    {
        this._b = b;
    }
}

class B { }

如果类型A和类型B都注册到了autofac中,那么在通过autofac解析获取A时,autofac会检测到A的构造方法中是要一个参数B,而类型B是已经注册到autofac中的,所以autofac会自动创建b参数,然后传入A的构造方法中的。这样,autofac就自动帮我们完成了构造注入的工作

属性注入

属性注入的所有注入方式都是在注册时定义的,不像构造注入那般,可以在Resolve时传参注入。构造器注入是默认行为,不需要设置,默认会去检查,而属性注入并不是默认行为。但是我们可以通过设置,让属性注入也成为自动注入。

猜你喜欢

转载自www.cnblogs.com/GnailGnepGnaw/p/10753619.html