使用Python.NET调用C#函数,但仍然得到一个TypeError

时间:2017-06-22 08:18:24

标签: c# python python-2.7 python.net

我正在尝试通过Python.NET在我的Python程序中使用Rant procedural text generator。我正在使用主Rant网站上documentation的示例代码进行测试。我可以将Rant类导入到我的Python程序中,但是当我到达示例的rant.Do(pgm)部分时,整个程序就会崩溃。

我的代码看起来像这样(我主要是从Python命令行解释器执行此操作):

import clr
import System
lib_dir = '/path/to/Rant.dll'
clr.AddReference(lib_dir)
from Rant import RantProgram
from Rant import RantEngine
from Rant import RantProgramArgs as args
rant = RantEngine
pgm = RantProgram.CompileString('[numfmt:verbal][rep:10][sep:,\s]{[rn]}')
# Here's where the program occurs.
output = rant.Do(pgm)

当我尝试在对象Do()中使用rant方法时,会出现问题。当我运行它时,它会给出错误TypeError: No method matches given arguments。我查看了this question,因为它建议输入该方法的所有参数。

Do()方法的方法参数包括以下内容(这是我通过调用help(RantEngine)获得的内容):

Rant.RantOutput Do(Rant.RantProgram, Int32, Double, Rant.RantProgramArgs)
Rant.RantOutput Do(Rant.RantProgram, Rant.RNG, Int32, Double, Rant.RantProgramArgs)
Rant.RantOutput Do(Rant.RantProgram, Int64, Int32, Double, Rant.RantProgramArgs)

我尝试过使用第一个。所以我试着调用这样的方法:

rant.Do(pgm, System.Int32(1), System.Double(2), args)

可悲的是,它仍然给了我TypeError

那么我怎样才能让代码代码在Python下运行?

0 个答案:

没有答案