日期:2014-05-17  浏览次数:20947 次

反射技术:调用被测试窗口方法获取异常问题
有一个需求是:我在一个A窗口点击按钮后启动另一个程序B窗口来测试,在A窗口使用反射技术来获取B窗口的信息,代码如下: Assembly asm = Assembly.LoadFrom(applicationPath);
Type typeUT = asm.GetType(typeName);
  object obj = Activator.CreateInstance(typeUT);
  MethodInfo mi = typeUT.GetMethod("Show",allFlags);
  mi.Invoke(obj,null);
  return obj;
这段代码能够获取A窗口的类型,但是就是不能找到A的窗口方法Show()来显示该窗口出现,程序执行到
typeUT.GetMethod这段代码就直接跳过了,也就是有问题,但是我这样写确实没问题啊,我要得到A窗口的Show()方法,参数第一写方法名,第二个参数allFlags=private static BindingFlags allFlags = BindingFlags.Public | BindingFlags.NonPublic |BindingFlags.Static | BindingFlags.Instance; 请问下各位高手,为什么这段代码得不到A窗口方法啊?


------解决方案--------------------
探讨

Show方法就是没有参数啊?如果我在A窗口显示该窗体,就实例化对象后调用Show()无参数的显示了,那么我发射的时候也无需要写方法参数啊!haukwong,请教你下,你说的<GetMethod有其他重载,调用方式比这个简单>是什么意思啊?