【问题标题】:How to provide access to helper functions for plugins?如何提供对插件辅助功能的访问?
【发布时间】:2009-02-13 05:01:10
【问题描述】:

在我的 .NET 应用程序中,我允许人们添加他们的插件。但是我有几个帮助函数可以帮助他们。

为插件提供对这些功能的访问的最佳方式是什么?

我是否应该在项目中添加一个新的 DLL 并将所有辅助方法/类放到那里并告诉插件开发人员链接该 DLL?

我目前正在设计这个系统,之前从未开发过插件系统,所以不想做出愚蠢的决定。

【问题讨论】:

    标签: .net plugins


    【解决方案1】:

    我认为向项目添加 DLL 并将其作为“帮助”机制提供的方法没有任何问题。但是,请记住,您无法真正控制它们如何在 DLL 中实例化类,并且必须检查所有函数的所有输入以确保它们有效,而不是 null 等。

    另一个想法是提供一个具有辅助函数的接口(甚至是其他辅助接口的引用)并将其传递给插件。这样您就不必担心对象的创建,并且他们将如何使用加载项的向量将仅限于您在界面中公开的内容。

    【讨论】:

    • 对于那些没有时间投资另一个框架的人,我完全同意。
    【解决方案2】:

    托管可扩展性框架 (MEF) 的创建理念是向您的代码中添加插件

    MEF Programming Guide

    【讨论】:

    • 您知道如何在 MEF 中执行此操作吗?我已经用一个接口实现了 MEF,它工作得很好,但是辅助函数呢?我看不到任何关于此的页面。
    【解决方案3】:

    最终您将通过程序集公开您的 API,所以是的,将作为 API 一部分的所有类、静态方法等放入单个程序集中可能是最简单的,这样您的插件编写者将有一个参考点。

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      相关资源
      最近更新 更多