使用autofac注册继承特定接口的类或接口

public class MyModule : Module
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="builder"></param>
    protected override void Load(ContainerBuilder builder)
    {
        // 扫描程序集中所有继承自ITransientDependency的类,并以Transient生命周期方式进行注册
        builder.RegisterAssemblyTypes(ThisAssembly)
            .Where(type => typeof(ITransientDependency).IsAssignableFrom(type) && type.IsClass && !type.IsAbstract)
            .AsImplementedInterfaces()
            .InstancePerDependency();

        // 扫描程序集中所有继承自ISingletonDependency的类,并以Singleton生命周期方式进行注册
        builder.RegisterAssemblyTypes(ThisAssembly)
            .Where(type => typeof(ISingletonDependency).IsAssignableFrom(type) && type.IsClass && !type.IsAbstract)
            .AsImplementedInterfaces()
            .SingleInstance();

        // 扫描程序集中所有继承自IScopedDependency的类,并以Scoped生命周期方式进行注册
        builder.RegisterAssemblyTypes(ThisAssembly)
            .Where(type => typeof(IScopedDependency).IsAssignableFrom(type) && type.IsClass && !type.IsAbstract)
            .AsImplementedInterfaces()
            .InstancePerLifetimeScope();
    }
}

 

posted @ 2023-08-28 17:58  对不起,我要起飞  阅读(59)  评论(0编辑  收藏  举报