C# 如何通过扫描本地exe或程序集将类型注册为特定接口

C# 如何通过扫描本地exe或程序集将类型注册为特定接口,c#,autofac,C#,Autofac,我知道我可以使用反射扫描和注册组件?这就是它在help/wiki中所说的扫描吗 var builder = new ContainerBuilder(); builder.RegisterType<GeneralHtmlNotifier>().As<INotifier>(); builder.RegisterType<DiskSystemNotifier>().As<INotifier>(); builder.RegisterTyp

我知道我可以使用反射扫描和注册组件?这就是它在help/wiki中所说的扫描吗

  var builder = new ContainerBuilder();
  builder.RegisterType<GeneralHtmlNotifier>().As<INotifier>();
  builder.RegisterType<DiskSystemNotifier>().As<INotifier>();
  builder.RegisterType<DatabaseSizesNotifier>().As<INotifier>();
  builder.RegisterType<GeneralTextFileNotifier>().As<INotifier>();
  builder.RegisterType<DiskSystemTextNotifier>().As<INotifier>();
  builder.RegisterType<DatabaseSizesTextNotifier>().As<INotifier>();
  builder.RegisterType<DiskSystemHierarchyNotifier>().As<INotifier>();
  builder.RegisterType<DatabaseSizeHierarchyNotifier>().As<INotifier>();
  builder.Build();

这就是我要找的。

这是我通常使用的,因此它确保实现特定的接口,并摆脱抽象类(如果有的话):

这有帮助吗?
 var dataAccess = Assembly.GetExecutingAssembly();

 builder.RegisterAssemblyTypes(dataAccess)
    .Where(t => t.Name.EndsWith("Repository"))
 .AsImplementedInterfaces();
builder.RegisterAssemblyTypes(dataAccess)
         .Where(t => (typeof(INotifier).IsAssignableFrom(t) && t.IsClass && !t.IsAbstract))
         .AsSelf()
         .AsImplementedInterfaces();