SuperClass1
使用类型时,如何通过反射获取所有字段SubClass1
?
这是我到目前为止所拥有的:
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;
}
}
}
您正在寻找的称为声明类型。
您可以查看以下链接以获取更多信息:MSDN,声明类型
你的代码可以写成:
public static void PrintAllFields(object obj)
{
var nestedClassType = obj.GetType();
var declaringClassType = nestedClassType.DeclaringType;
if (declaringClassType != null)
{
var fields = declaringClassType.GetFields();
}
}
不要忘记检查是否真的有一个声明类型,否则你declaringClassType
将是空的,你最终会得到一个NullReferenceException
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句