PythonNET:C# 函数不修改传递给它的 class 实例
PythonNET: C# function does not modify class instanced passed to it
我有一个 C# class 喜欢
public MY_CLASS(int number)
{
SomeField = number;
SetElseWhere = 0;
}
}
我想传递给像
这样的 C# 函数
public static bool MyTask(string pathXML, out MY_CLASS test)
我希望 MyTask
在 MY_CLASS
的实例中修改字段 SetElseWhere
在 PythonNet 中我这样调用函数
import System
my_dll = System.Reflection.Assembly.LoadFile('example.dll')
MY_CLASS_t = my_dll.GetType('NAMESPACE.MY_CLASS')
my_instance = System.Activator.CreateInstance(MY_CLASS_t)
x = MyTask('test.xml', my_instance)
现在越来越奇怪了,至少对我来说是这样:
返回值 x 是一个包含两个条目的元组,一个布尔值和一个对象
类型 NAMESPACE.MY_CLASS
。但这不是我作为第二个参数发送的实例 属性 out
.
当我检查结果时,我可以看到返回的对象
元组已被正确修改,但我发送的实例
尚未修改。
知道为什么吗?
好的,我终于明白你的问题了,这个问题没有记录。 Python 中没有 out/ref 参数的概念,因此对参数的修改在元组中返回。
这是一个关于此的未决问题:
我有一个 C# class 喜欢
public MY_CLASS(int number)
{
SomeField = number;
SetElseWhere = 0;
}
}
我想传递给像
这样的 C# 函数public static bool MyTask(string pathXML, out MY_CLASS test)
我希望 MyTask
在 MY_CLASS
SetElseWhere
在 PythonNet 中我这样调用函数
import System
my_dll = System.Reflection.Assembly.LoadFile('example.dll')
MY_CLASS_t = my_dll.GetType('NAMESPACE.MY_CLASS')
my_instance = System.Activator.CreateInstance(MY_CLASS_t)
x = MyTask('test.xml', my_instance)
现在越来越奇怪了,至少对我来说是这样:
返回值 x 是一个包含两个条目的元组,一个布尔值和一个对象
类型 NAMESPACE.MY_CLASS
。但这不是我作为第二个参数发送的实例 属性 out
.
当我检查结果时,我可以看到返回的对象 元组已被正确修改,但我发送的实例 尚未修改。
知道为什么吗?
好的,我终于明白你的问题了,这个问题没有记录。 Python 中没有 out/ref 参数的概念,因此对参数的修改在元组中返回。
这是一个关于此的未决问题: