【发布时间】:2013-08-04 19:51:37
【问题描述】:
这可能是一个远大的目标,但 .NET 的灵活性从未停止让我感到惊讶,所以就这样吧。
我正在开发一个 MVC 应用程序,它需要在一组程序集中搜索从公共基类派生的类类型。
即我有几个具有活动类型的程序集都派生自 ActivityBase。这些程序集将放置在特定目录中。它们有点像插件。由于它们需要在运行时动态加载,因此它们还需要伴随一些依赖项(除非我能找到一种方便的方法来分离它们,也可以随意加入。)
我的代码将遍历此目录中的所有 .DLL 文件、加载程序集并遍历程序集中的所有类型以查找派生自 ActivityBase 的类型。
这很好用。但是,我想避免加载和搜索没有活动的程序集,因为某些依赖项有数千种类型,这会成为性能问题。
所以我想我的问题是,除了文件命名约定之外,有没有办法用某种类型的数据来“装饰”或标记一个程序集,这些数据表明它是一个活动程序集,可以很容易地在构建时间并在运行时轻松阅读?
也欢迎任何其他处理此问题的建议。
【问题讨论】:
-
属性解决方案的替代方案(不知何故,因为它本身大量使用属性)是Microsoft Extensibility Framework - MEF 使您能够获取特定类型/实现的程序集。
-
感谢您提供的糊状,不确定,但 MEF 听起来可能对我的整体应用程序设计有所帮助,所以我也要研究一下。
标签: c# .net assemblies