C# IronPython中的设置字段导致无值

C# IronPython中的设置字段导致无值,c#,python,.net,ironpython,C#,Python,.net,Ironpython,我在使用IronPython时遇到了一个问题。我创建了一个C DLL,其中有一个类如下所示: namespace MyNamespace { public static class MyClass { public struct Parameters { public String str1; public String str2; public int anIntValue;

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

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...
       }
import clr
clr.AddReferenceToFileAndPath("C:\MyPath\MyFile.dll")

from MyFile import MyNamespace

obj = MyClass()
obj.anIntValue = 8
print obj.anIntValue 
IronPython中的代码如下所示:

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...
       }
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创建一个对象,并为它的属性赋值,但是当我尝试用标准的方法,比如anAttribute=aValue,如果我理解正确,它只会将值复制到一个临时对象中,而不是复制到我想要修改的对象中

我是不是遗漏了什么


非常感谢

我解决了这个问题,因为实际上

我不得不打电话的例子

 MyClass.Parameters.anIntValue.SetValue(instance,value)
不是:

MyClass.Parameters.anIntValue.SetValue(obj.anIntValue,8)
而是:

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

对IronPython一点也不熟悉,但从C的角度来看,您的值似乎都隐藏在结构参数中。因此,不在MyClass对象上定义一个tValue是有意义的,因为它是在MyClass.Parameters.anitValue下定义的。如果您将一个tValue直接作为类的成员公开,它是否有效?这实际上是我的一个错误,obj=MyClass。参数实际上是我在IronPython代码中编写它的方式。我似乎没有权限编辑我自己的问题