Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python绑定添加到C#?_C#_.net_Python_Python Bindings - Fatal编程技术网

如何将python绑定添加到C#?

如何将python绑定添加到C#?,c#,.net,python,python-bindings,C#,.net,Python,Python Bindings,当您想从python调用C时,可以编写如下模块: 现在,我有一个问题: 我想用C#编写一个在Python中使用的模块 如何让C#与本机Python交互? (注:我对Python .NET或IrPython不感兴趣)。 < P>我知道你可能不喜欢这个答案,但老实说:用C++编写,使用Boosi::Python或直接在Cython中。 使用C#编写扩展是可能的,但您必须转换Python使用的数据结构,导入大量Python C API,在托管代码和非托管代码之间来回封送所有内容,在Python和C#

当您想从python调用C时,可以编写如下模块:

现在,我有一个问题:

我想用C#编写一个在Python中使用的模块

如何让C#与本机Python交互?

(注:我对Python .NET或IrPython不感兴趣)。

< P>我知道你可能不喜欢这个答案,但老实说:用C++编写,使用Boosi::Python或直接在Cython中。 使用C#编写扩展是可能的,但您必须转换Python使用的数据结构,导入大量Python C API,在托管代码和非托管代码之间来回封送所有内容,在Python和C#的垃圾收集器之间映射对象生命周期等,这很可能不值得

您还将导致对.NET framework的依赖,松散的平台独立性(甚至可能使用Mono),但总体上没有什么好处


如果您想在CPython中使用C#程序集,最好的选择实际上是Python端的win32com模块,以及.NET端的COM互操作。它允许您将C#对象公开为COM类,并在源代码级别添加一些属性,然后轻松地将它们作为对象、事件和所有内容导入Python。我在这两个平台上都有了很大的成功。

只是出于好奇,因为IrPython和Python .NET都似乎符合你所说的描述,为什么你对它们不感兴趣?使用托管C++,那么很容易从C++ Python绑定调用你的.NET代码(C ^)。但是,您可能仍然需要考虑“固定”对象,以防止它们在被另一方使用时被垃圾收集。