获取继承特定接口的类的列表?

时间:2018-08-24 18:23:40

标签: c# .net

我在项目中使用了依赖注入,想知道是否可以更轻松地注册我的所有30多个继承某个接口的类,而每个类都使用来继承某个接口,那样动态地工作。

我已经在Google,SO,RJ,YHA和其他问答网站上进行了查询,但没有任何帮助。它只是说明了您是否已经拥有这些类的集合,而没有一个仅通过接口显示如何做。

例如,我需要获取Class1、2和3以及所有继承IClass的其他分类的列表。

class Class1 : IClass {}
class Class2 : IClass {}
class Class3 : IClass {}

如果以后要声明这些内容,也会找到它们。

class Class4 : IClass {}
class Class5 : IClass {}
class Class6 : IClass {}

1 个答案:

答案 0 :(得分:2)

DI容器通常为此目的提供一些功能。例如,通过Autofac,您可以像这样使用Assembly Scanning

var dataAccess = Assembly.GetExecutingAssembly();

builder
   .RegisterAssemblyTypes(dataAccess)
   .Where(t => t.Name.EndsWith("Repository"))
   .AsImplementedInterfaces();

此示例显示如何在执行程序集时注册所有存储库。因为您的组件实现了相同的接口,所以我猜您可以找到一些命名模式来像这样注册它们。

相关问题