2017-08-02 75 views
-2

如何使用SubClass1类型处理SuperClass1中的所有字段?如何从嵌套类访问包含类的字段

这是我到目前为止有:

namespace ConsoleApplication9 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      SuperClass1.SubClass1 class1 = new SuperClass1.SubClass1(); 
      PrintAllFields(class1); 
     } 

     public static void PrintAllFields(object obj) 
     { 
      var SuperClassType = obj.GetType(); 
      // How do I get the fields 'param1', 'param2', 'param3' from here? 
      SuperClassType.GetFields(); 
     } 
    } 

    public class SuperClass1 
    { 
     public int param1; 
     public int param2; 
     public int param3; 
     public class SubClass1 
     { 
      public int paramTest; 
     } 
    } 
} 

回答

2

你在找什么叫声明类型。

你可以看看下面的链接了解更多信息:MSDN, Declaring Type

您的代码可以写成:

public static void PrintAllFields(object obj) 
{ 
    var nestedClassType = obj.GetType(); 
    var declaringClassType = nestedClassType.DeclaringType; 

    if (declaringClassType != null) 
    { 
     var fields = declaringClassType.GetFields(); 
    } 
} 

不要忘记检查,如果确实有一个声明类型,因为否则,您declaringClassType将为空,您将以NullReferenceException结束。