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