在.NET中键入字段与嵌套类型

时间:2015-11-08 22:51:33

标签: c# reflection

对于类型,有命令GetFields()和命令GetNestedTypes()。 GetFields()不返回嵌套类型。 我对字段和嵌套类型之间的区别感到困惑。 例子非常有帮助! 谢谢

2 个答案:

答案 0 :(得分:4)

  

字段是直接在类或结构中声明的任何类型的变量。字段是其包含类型的成员。 (https://msdn.microsoft.com/en-us/library/ms173118.aspx

  

在类或结构中定义的类型称为嵌套类型。 (https://msdn.microsoft.com/en-us/library/ms173120.aspx

例如,在班级

class Foo
{
    private int a;

    public class Bar
    {
        // ...
    }
}

a是一个字段,Bar是嵌套类型。

答案 1 :(得分:1)

class Foo {
    private String _aField;

    private class ANestedClass {
        private String _aFieldInANestedClass;
    }
}

像这样:

public void Blargh() {
    Foo foo = new Foo();
    FieldInfo aField = foo.GetType().GetField("_aField");
    String aFieldValue = aField.GetValue( foo );

    Type[] nestedTypes = foo.GetType().GetNestedTypes();
    Type aNestedClass = nestedTypes.Single( t => t.Name == "ANestedClass" );
}