代码片段解读
假设我有一个用 C# 编写的 WinForm 应用程序。
是否可以?
Let's say I have a WinForm App...written in C#.
Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
假设我有一个用 C# 编写的 WinForm 应用程序。
是否可以?
Let's say I have a WinForm App...written in C#.
Is it possible?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
毕竟,我把目光投向了铁蟒。
After all, put my eye on Iron Python.
C# 不是解释性的,因此与 javascript 或其他解释性语言不同,您无法在本机执行此操作。您可以采用四种基本路线,此处按从最简单到最复杂的顺序列出...
1) 提供用户可以应用的一组固定操作。解析用户的输入,或提供复选框或其他 UI 元素来指示应应用给定的操作。
2) 提供基于插件或以其他方式动态定义的操作集。与#1 一样,这具有不需要完全信任等特殊权限的优点。 MEF 对于这种方法可能会派上用场: http://mef.codeplex.com/
3) 使用动态c# 编译框架,如 paxScript: http://eco148-88394.innterhost.net/paxscriptnet/。从理论上讲,这将允许您按需编译小型 C# 代码片段。
4) 使用 IL Emit 语句来解析代码并动态生成操作。这是迄今为止最复杂的解决方案,可能需要完全信任,并且极易出错。我不推荐它,除非您有一些非常模糊的需求和复杂的用户。
C# is not interpreted, so unlike javascript or other interpreted languages you can't do that natively. You can go four basic routes, listed here in order of least to most complex...
1) Provide a fixed set of operations that the user can apply. Parse the user's input, or provide checkboxes or other UI elements to indicate that a given operation should be applied.
2) Provide a plugin-based or otherwise dynamically defined set of operations. Like #1, this has the advantage of not needing special permissions like full trust. MEF might come in handy for this approach: http://mef.codeplex.com/
3) Use a dynamic c# compilation framework like paxScript: http://eco148-88394.innterhost.net/paxscriptnet/. This would, in theory, allow you to compile small c# snippets on demand.
4) Use IL Emit statements to parse code and generate your operations on the fly. This is by far the most complex solution, likely requires full trust, and is extremely error prone. I don't recommend it unless you have some very obscure requirements and sophisticated users.
CSharpCodeProvider 类将执行您想要的操作。有关其使用示例(非常过时,但仍在进行一些调整),请查看 CSI。
The CSharpCodeProvider class will do what you want. For a (VERY outdated, but still working with a few tweaks) example of its use, check out CSI.
如果您愿意考虑以 Mono 运行时为目标,则类型 Mono.CSharp.Evaluator 提供用于在运行时评估 C# 表达式和语句的 API。
If you are willing to consider targeting the Mono runtime, the type Mono.CSharp.Evaluator provides an API for evaluating C# expressions and statements at runtime.