Getting a list of classes that inherit a specific interface?
本问题已经有最佳答案,请猛点这里访问。
我正在我的项目中使用依赖注入,我想知道仅仅注册继承某个接口的30多个类是否更容易,使用for each,这样它就可以动态工作。
我在谷歌上查过,所以,RJ,YHA和更多的Q&A网站都没有帮助。它只是解释您是否已经有了它们类的集合,并且没有一个类只向您展示如何从一个接口完成它。
例如,我需要一个Class1、Class2和Class3的列表,以及继承IClass的任何其他clase。
1 2 3 | class Class1 : IClass {} class Class2 : IClass {} class Class3 : IClass {} |
如果我以后再申报这些,它们也会被找到。
1 2 3 | class Class4 : IClass {} class Class5 : IClass {} class Class6 : IClass {} |
DI容器通常为此目的提供一些功能。例如,使用autopac,可以使用如下程序集扫描:
1 2 3 4 5 6 | var dataAccess = Assembly.GetExecutingAssembly(); builder .RegisterAssemblyTypes(dataAccess) .Where(t => t.Name.EndsWith("Repository")) .AsImplementedInterfaces(); |
此示例演示如何在执行程序集时注册所有存储库。因为您的组件实现了相同的接口,我想您可以找到一些命名模式来注册它们。