我必须为现有应用程序编写add-in
。客户端将使用该应用程序和加载项。应用程序和add-in
都是用户的黑盒子。我的加载项是C#中的.Net C# dll
和用户可以编码。
现在我必须提供一种机制,用户可以通过该机制编写一些C#
代码。该代码将在运行时由我的add-in
加载和执行,以获取加载项中所需的数据。
实现这一目标的最佳做法是什么
修改
只是为了清楚一点......
在我的插件中,在执行期间,我得到一个字符串
现在我想调用一些用户功能
string resultString = UserFunction("SomeString");
现在我想知道如何允许用户编写此UserFunction
以便我可以在运行时调用它并根据resultString
SomeString
答案 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?。第二个答案提供了一个很好的建议,即使用基类和您的贡献者覆盖的虚拟方法。