类变量在反射C#中重置为null

时间:2010-11-04 12:45:35

标签: reflection variables null

我使用反射创建一个Person类的实例并执行其构造函数,然后执行另一个名为“Execute”的person类函数:

Assembly assembly = Assembly.GetEntryAssembly();
object personObject = assembly.CreateInstance("ReflectionTest.Person");

// Call Constructor
var ctor = personObject.GetType().GetConstructor(new Type[] { typeof(int) });
var obj = ctor.Invoke(new object[] { 10 });

// Call Method
MethodInfo methodInfo = personObject.GetType().GetMethod("Execute");
object obj1 = methodInfo.Invoke(personObject, null);

问题是当我调用“Execute”方法时,我在构造函数中实例化的所有人类变量都是NULL。为什么?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

在您的示例中,您使用以下行调用默认构造函数:

object personObject = assembly.CreateInstance("ReflectionTest.Person");

这是构造对象的正确方法:

Assembly assembly = Assembly.GetEntryAssembly();
Type personType = assembly.GetType("ReflectionTest.Person");
object inst = Activator.CreateInstance(personType, new object[] { 10 }); 

答案 1 :(得分:0)

我不是100%,但可以将obj投射到人员的帮助中吗?