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)

我希望 MyTaskMY_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 参数的概念,因此对参数的修改在元组中返回。

这是一个关于此的未决问题:

https://github.com/pythonnet/pythonnet/issues/228