IronPython 中的设置字段导致 None 值

Setting field in IronPython resulting in None value

我在使用 IronPython 时遇到问题。我创建了一个 C# DLL,其中有一个 class,如下所示:

namespace MyNamespace
{

    public static class MyClass
    {

       public struct Parameters
       {
           public String str1;
           public String str2;
           public int anIntValue;
       }

       public static void MyMethod(Parameters param, out Double Result, ref String msg)
       {
           //...Stuff...
       }

IronPython 中的代码如下所示:

import clr
clr.AddReferenceToFileAndPath("C:\MyPath\MyFile.dll")

from MyFile import MyNamespace

obj = MyClass()
obj.anIntValue = 8
print obj.anIntValue 

它输出值“0”,我收到警告:

RuntimeWarning: Setting field anIntValue on value type MyClass may result in updating a copy. 
Use MyClass.anIntValue.SetValue(instance, value)...

所以我尝试了以下方法:

MyClass.anIntValue.SetValue(obj.anIntValue,8)

我收到以下错误:

ValueError : Field 'anIntValue' defined on type 'MyNamespace.MyClass' is not
a field on the target object which is of type 'System.Int32'. 

所以基本上,我唯一想做的就是从 "MyClass" 创建一个对象并为其属性赋值,但是当我尝试这样做时 "standard way",就像anAttribute = aValue,如果我没有理解错的话,它只是将值复制到一个临时对象中,而不是复制到我要修改的对象中。

我是不是遗漏了什么?

非常感谢

我解决了它,因为实际上,

我必须调用的实例

 MyClass.Parameters.anIntValue.SetValue(instance,value)

不是:

MyClass.Parameters.anIntValue.SetValue(obj.anIntValue,8)

而是:

MyClass.Parameters.anIntValue.SetValue(obj,8)