已建立好Dog类,
public class Dog { public string Name; public void ShoutHi() { } } Assembly ass = this.GetType().Assembly; Type tDog = ass.GetType("WindowsFormsApplication1.Dog"); FieldInfo fInfo = tDog.GetField("Name"); MethodInfo mInfo = tDog.GetMethod("ShoutHi"); Dog d2 = Activator.CreateInstance(tDog) as Dog; fInfo.SetValue(d2, "旺财"); object strRes = mInfo.Invoke(d2, null);
最后一个strRes为Null,查看后发现tDog.IsGenericParameter 为false,引发了DeclaringMethod = “tDog.DeclaringMethod”引发了“System.InvalidOperationException”类型的异常,GenericParameterAttributes = “tDog.GenericParameterAttributes”引发了“System.InvalidOperationException”类型的异常,GenericParameterPosition = “tDog.GenericParameterPosition”引发了“System.InvalidOperationException”类型的异常.
求指导怎么改呢,谢谢.
tDog.IsGenericParameter false bool
ShoutHi方法没有返回值,strRes不就是为null嘛,如果ShoutHi里面返回Name,strRes的值就是“旺财”,你修改代码看看。
http://www.cnblogs.com/zery/p/3385107.html 我写过关于反射相关的文章 ,包含了三种不同情况下反射调用方法。
应该可以解决你的问题,因为不知道你的类是否属于同一工程中