使用反射在结构内获取结构

RDP

我正在尝试使用反射在结构中获取一个结构(我正在使用结构来封送一些继承的C DLL结构):

public struct Struct1
{
    public Int32 Value;
}
public struct Struct2
{
    // I0/I1 are substructures in an "Unrolled" array.
    public Struct1 I0;
    public Struct1 I1;
}

然后,在我的程序中:

class Program
{
    static void Main(string[] args)
    {
        Struct2 MyStr = new Struct2();
        MyStr.I0.Value = 0; 
        MyStr.I1.Value = 1; 
        // I want to access I0/I1 using reflection. 
        for (int i =0; i<2;i++) { 
            string structname = "I"+i;               
            FieldInfo FI = typeof(Struct2).GetType().GetField(structname, BindingFlags.Public | BindingFlags.Instance);
            object StructureWeWant = FI.GetValue(MyStr);  // Tool errors here, saying FI is empty. 
            FieldInfo ValueFieldInsideStruct1 = typeof(Struct1).GetField("Value");
            Int32 ValueIWantToPrint = (Int32) ValueFieldInsideStruct1.GetValue(StructureWeWant);
            Console.WriteLine(structname + "  " + ValueIWantToPrint);
        }
    }
}

有人知道我的错误在哪里吗?我认为结构可以通过GetField()访问,但也许不是吗?

雷达·马塔(Reda Mattar)

typeof(Struct2).GetType()给你一个System.RuntimeType,而不是你的结构。删除GetType()以使其正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用反射在结构内获取结构

来自分类Dev

使用反射在Golang中打印结构指针字段类型

来自分类Dev

使用反射获取结构字段的名称

来自分类Dev

使用反射在结构和类之间的等效属性中复制

来自分类Dev

使用反射在结构和类之间的等效属性之间进行复制

来自分类Dev

在Go中使用反射来获取结构的名称

来自分类Dev

.net使用反射在多级上获取属性

来自分类Dev

Golang反射:从结构字段获取标签

来自分类Dev

使用反射来修改对象的结构

来自分类Dev

使用反射来修改对象的结构

来自分类Dev

如何获取类内的结构?

来自分类Dev

golang反射,获取指向结构字段值的指针

来自分类Dev

使用Dlang中的反射在运行时获取变量值

来自分类Dev

如何使用反射创建结构切片?

来自分类Dev

在Go中,如何使用反射设置结构上地图的值?

来自分类Dev

Java反射无法更改结构

来自分类Dev

Java反射无法更改结构

来自分类Dev

如果对象类是使用Java反射在字段上的数组,则无法获取包和类名

来自分类Dev

使用Java反射在运行时上下文中获取所有定义的变量(内部是Voodoo)

来自分类Dev

在C ++中的结构内结构

来自分类Dev

C:在结构内访问结构

来自分类Dev

使用gets()获取结构输入错误

来自分类Dev

使用include获取DDIC结构的组件

来自分类Dev

使用jQuery从html结构获取数据

来自分类Dev

使用PHP从FTP获取目录结构

来自分类Dev

使用结构内实例化的参数

来自分类Dev

使用结构内实例化的参数

来自分类Dev

如何在结构内使用 SubArray?

来自分类Dev

尝试使用反射在集合中查找属性值