有没有标准的方法或设计模式来处理这个?

时间:2012-01-25 15:35:25

标签: c# design-patterns add-in

我必须为现有应用程序编写add-in。客户端将使用该应用程序和加载项。应用程序和add-in都是用户的黑盒子。我的加载项是C#中的.Net C# dll和用户可以编码。

现在我必须提供一种机制,用户可以通过该机制编写一些C#代码。该代码将在运行时由我的add-in加载和执行,以获取加载项中所需的数据。

实现这一目标的最佳做法是什么

修改

只是为了清楚一点......

在我的插件中,在执行期间,我得到一个字符串

现在我想调用一些用户功能

string resultString = UserFunction("SomeString");

现在我想知道如何允许用户编写此UserFunction以便我可以在运行时调用它并根据resultString

返回SomeString

2 个答案:

答案 0 :(得分:3)

呃..这有点棘手......特别是如果它必须完全按你所说的方式发生。

您可以允许用户将文本c#代码传递给您的dll中的函数,然后基本上将该代码编译到内存中的程序集中,但这似乎允许某人将代码传递到已编译的代码中DLL,以便重新编译并再次运行。

您可以在此处查看此帖子,了解有关此主题的更多信息: http://www.dotnetthoughts.net/2011/01/09/how-to-compile-c-code-snippet-in-runtime/

更好的做法是只将DATA传递给DLL,如果你能以某种方式重构你的应用程序以支持它。

答案 1 :(得分:1)

查看类似问题的答案:Is it possible to dynamically compile and execute C# code fragments?。第二个答案提供了一个很好的建议,即使用基类和您的贡献者覆盖的虚拟方法。