Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';我们无法通过反射获得磁场_C#_Reflection - Fatal编程技术网

C# Can';我们无法通过反射获得磁场

C# Can';我们无法通过反射获得磁场,c#,reflection,C#,Reflection,这是我的班级: public static class Root { private static readonly NestedOne nestedOne; static Root() { nestedOne = new NestedOne(); } class NestedOne { private string FindMe = "blabla"; } } 我需要通过根获取名为“FindMe”的字

这是我的班级:

public static class Root
{
    private static readonly NestedOne nestedOne;

    static Root()
    {
        nestedOne = new NestedOne();
    }

    class NestedOne
    {
        private string FindMe = "blabla";
    }
}
我需要通过根获取名为“FindMe”的字段。我成功获取了NestedOne的实例:

var nestedOne = typeof(Root).GetField("nestedOne", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
但不能再进一步了:

var fields = nestedOne.GetType().GetFields(BindingFlags.NonPublic);  // there is empty
请帮帮我

  • nestedOne
    是的一个实例
  • 调用
    nestedOne.GetType()
    将为您提供一个表示
    FieldInfo
    类型的
    Type
    实例
  • 由于
    Type
    没有字段,因此将得到一个空集合
  • 您要做的是使用该属性,而不是调用
    .GetType()

    您还需要为实例字段指定
    BindingFlags.Instance
    标志


    演示:

    您要查找的字段是实例字段,您需要通过指定
    BindingFlags.instance
    标志在搜索中包括该类别

    GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
    

    根据MSDN文档,必须指定BindingFlags.Instance 尝试使用


    哦,我明白了。但是我很困惑,我怎么能设置这个字段的值呢?我知道了:var v=nestedOne.GetValue(null);f、 设定值(v,“123”);这也很有帮助:
    GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
    
    Type[] myTypeArray = myType.GetNestedTypes(BindingFlags.NonPublic|BindingFlags.Instance);