首页 新闻 会员 周边

反射报错,求指导

0
悬赏园豆:30 [已解决问题] 解决于 2013-12-22 16:51

已建立好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

happydaily的主页 happydaily | 菜鸟二级 | 园豆:301
提问于:2013-12-22 11:18
< >
分享
最佳答案
1

ShoutHi方法没有返回值,strRes不就是为null嘛,如果ShoutHi里面返回Name,strRes的值就是“旺财”,你修改代码看看。

收获园豆:20
水晶途途 | 小虾三级 |园豆:1443 | 2013-12-22 12:36
其他回答(1)
0

http://www.cnblogs.com/zery/p/3385107.html  我写过关于反射相关的文章 ,包含了三种不同情况下反射调用方法。

应该可以解决你的问题,因为不知道你的类是否属于同一工程中

收获园豆:10
Zery | 园豆:6151 (大侠五级) | 2013-12-22 12:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册