当前位置:  开发笔记 > 编程语言 > 正文

如何在IronPython中创建.NET程序集并从C#调用它?

如何解决《如何在IronPython中创建.NET程序集并从C#调用它?》经验,为你挑选了1个好方法。

我想使用IronPython创建一个程序集,可以从C#中调用它.这是我问的两件事.

    我不是问如何从IronPython中调用C#.最容易找到的文档描述了如何从IronPython中调用C#.(例如,IronPython附带的教程.)我想反过来,从C#调用IronPython.

    我不是问如何嵌入IronPython解释器.我已经找到了几个有用的参考资料(例如这里和这里),介绍如何从C#调用IronPython解释器.这很有帮助,但我更感兴趣的是从IronPython创建一个已编译的程序集.也就是说,我想对IronPython程序集进行方法调用,而不是将源代码字符串传递给解释器.

一旦我创建了程序集,有什么关于调用它的技巧?一个博客帖子,我发现说:

...从C#调用Python程序集是非常重要的.该python程序集包含动态类型,这些类型不容易反映到有用的C#对象中.

你知道在IronPython和C#之间传递基本数据类型的任何备忘单吗?

更新:我现在最感兴趣的场景是将两个或三个double值传递给Python并double返回一个或两个值.如果我可以传入一个字符串并获得一个非常棒的字符串,但我的首要任务就是来回传递数字.



1> Curt Hagenlo..:

如果您的目标是创建一个包含类似于C#创建的类型的程序集,那么这实际上是不可能的.这里的主要问题是Python类型与CLR类型的工作方式大不相同.首先,它们可以在运行时进行变异,而CLR类型是完全静态的.所以今天实现这一目标的唯一方法是使用托管接口创建一个小的C#存根,它将工作委托给Python代码.

IronPython确实能够编译成程序集 - 这就是博客文章所指的内容 - 但我们这样做主要是为了让您可以将IronPython应用程序部署到客户而无需向他们提供源代码.

通过在此答案中添加注释,随意跟进更具体的场景,我很乐意提供有关如何实施的建议.


C#4和新的动态功能有没有改变这个答案?
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有