【发布时间】:2009-02-13 05:01:10
【问题描述】:
在我的 .NET 应用程序中,我允许人们添加他们的插件。但是我有几个帮助函数可以帮助他们。
为插件提供对这些功能的访问的最佳方式是什么?
我是否应该在项目中添加一个新的 DLL 并将所有辅助方法/类放到那里并告诉插件开发人员链接该 DLL?
我目前正在设计这个系统,之前从未开发过插件系统,所以不想做出愚蠢的决定。
【问题讨论】:
在我的 .NET 应用程序中,我允许人们添加他们的插件。但是我有几个帮助函数可以帮助他们。
为插件提供对这些功能的访问的最佳方式是什么?
我是否应该在项目中添加一个新的 DLL 并将所有辅助方法/类放到那里并告诉插件开发人员链接该 DLL?
我目前正在设计这个系统,之前从未开发过插件系统,所以不想做出愚蠢的决定。
【问题讨论】:
我认为向项目添加 DLL 并将其作为“帮助”机制提供的方法没有任何问题。但是,请记住,您无法真正控制它们如何在 DLL 中实例化类,并且必须检查所有函数的所有输入以确保它们有效,而不是 null 等。
另一个想法是提供一个具有辅助函数的接口(甚至是其他辅助接口的引用)并将其传递给插件。这样您就不必担心对象的创建,并且他们将如何使用加载项的向量将仅限于您在界面中公开的内容。
【讨论】:
托管可扩展性框架 (MEF) 的创建理念是向您的代码中添加插件
【讨论】:
最终您将通过程序集公开您的 API,所以是的,将作为 API 一部分的所有类、静态方法等放入单个程序集中可能是最简单的,这样您的插件编写者将有一个参考点。
【讨论】: