gpt4 book ai didi

c# - 无法将 C# 字典作为参数传递给 ironPython 方法

转载 作者:行者123 更新时间:2023-11-28 18:52:45 24 4
gpt4 key购买 nike

我需要将存储在字典中的参数列表传递给函数由 ironPython 类实现。

我已经准备好重现错误的最小示例:

        // C# Side
var runtime = Python.CreateRuntime();
dynamic test = runtime.UseFile("test.py");

// Here the parameters dictionary is instantiated and filled
var parametersDictionary = new Dictionary<string, int>();
parametersDictionary.Add("first", 1);

// The Python 'x' instance is called passing parameter dictionary
var result = test.x.ReturnFirstParameter(parametersDictionary);

现在是 Python 代码:

# Python side

# Class 'Expression' definition
class Expression(object):
def ReturnFirstParameter(self, **parameters):
return parameters['first']

# Class 'Expression' instantiation
x = Expression()

当我运行程序时,出现以下异常:

ReturnFirstParameter() takes exactly 1 argument (2 given)

第一个参数是'self',但似乎忽略了它接收到的2个参数,'self'和字典。

我已经尝试更改其他参数的字典并且效果很好。问题仅在您收到 ** 参数时出现。

非常感谢您的帮助!

埃斯特万。

最佳答案

只需删除 Python 代码中 parameters 前面的 ** 即可:

class Expression(object):
def ReturnFirstParameter(self, parameters):
return parameters['first']

** 应该在您将命名参数传递给函数时使用,并且您的 C# 代码将传递一个字典。

您的 C# 代码将像这样调用该函数:

x.ReturnFirstParameter({'first': 1})

为了让它与**parameters 一起工作,调用需要是

x.ReturnFirstParameter(first=1)

可能有一种方法可以用 ironpython 做到这一点,但我不确定怎么做。

关于c# - 无法将 C# 字典作为参数传递给 ironPython 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9745909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com