PythonNET:C#函数不会修改传递给它的实例实例

时间:2018-06-27 11:21:06

标签: c# python python-3.x python.net pythonnet

我有一个C#类,例如

public MY_CLASS(int number)
        {
            SomeField = number;
            SetElseWhere = 0;
        }
    }

我想传递给

这样的C#函数
public static bool MyTask(string pathXML, out MY_CLASS test)

我希望MyTaskSetElseWhere的实例中修改字段MY_CLASS

在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声明的第二个参数发送的实例。

当我检查结果时,我可以看到返回的对象 元组已正确修改,但我发送的实例 尚未修改。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好吧,我终于了解了您的问题,并且没有记录此问题。 Python中没有out / ref参数的概念,因此对参数的修改将在元组中返回。

这是一个未解决的问题:

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