c# - 是否有任何标准方法或设计模式来处理这个问题?

标签 c# design-patterns add-in

我必须写一个add-in对于现有的应用程序。客户将使用该应用程序和加载项。应用程序和 add-in对用户来说是黑匣子。我的加载项是 .Net C# dll用户可以使用 C# 进行编码。

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

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

编辑

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

在我的加载项中,在执行过程中,我得到一个字符串

现在我想调用一些用户函数

string resultString = UserFunction("SomeString");

现在我想知道如何允许用户写这个UserFunction这样我就可以在运行时调用它并获取 resultString返回基于SomeString

最佳答案

呃..这有点棘手...特别是如果它必须完全按照您提出问题的方式发生。

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

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

更好的做法是仅将 DATA 传递到 DLL(如果您能以某种方式重构您的应用程序以支持它)。

关于c# - 是否有任何标准方法或设计模式来处理这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9005384/

相关文章:

c# - 在 C# 中更新项目列表

android - 服务类架构的设计模式

swing - Scala-Swing 中的 MVP

c# - outlook 2010 addin c#:::自定义表单在客户端计算机上不起作用

c# - .Net 插件和版本控制

c# - XUnit 在测试失败时输出更多信息

c# - 在两个值之间振荡或 "ping pong"?

add-in - 是否有帮助重构的 Monodevelop 插件?

c# - DynamicObject 绑定(bind) WRT 私有(private)类型

actionscript-3 - 多个 View 状态的设计模式?