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

发布时间 2023-08-28 18:01:51作者: 对不起,我要起飞
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();
    }
}