问题描述
silverlightwcf一般调用方法sc.GetDepartmentBySqlWhereAsync(sqlWhere);反射调用TypescType=typeof(ServiceClient);objectobj=Activator.CreateInstance(scType);//MethodInfomethod=scType.GetMethod("GetDepartmentBySqlWhereAsync",BindingFlags.Instance|BindingFlags.Public);这句总为null,试过多种BindingFlags组合,还是null,所以用下面的语句获得methodMethodInfo[]ms=scType.GetMethods();MethodInfomethod=null;for(inti=0;i<ms.Length;i++){if(ms[i].Name.Equals("GetDepartmentBySqlWhereAsync"))//sc中的方法名{method=ms[i];break;}}EventInfoevt=scType.GetEvent("GetDepartmentBySqlWhereCompleted",BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Public);evt.AddEventHandler(obj,newEventHandler<GetDepartmentBySqlWhereCompletedEventArgs>(Sc_GetDepartmentBySqlWhereCompleted));//异步成功后的方法名method.Invoke(obj,newstring[]{sqlWhere});反射和一般的方法都可以调用成功,反射中”GetDepartmentBySqlWhereAsync“和“GetDepartmentBySqlWhereCompleted”可以用键值对做成动态的但是AddEventHandler无法弄一个通用的方法来调用其它方法。比如GetUserbySqlWhereAsync(sqlWhere);GetXXXXXAsync(sqlWhere)evt.AddEventHandler(obj,newEventHandler<GetUserbySqlWhereCompletedEventArgs>(Sc_GetUserbySqlWhereCompleted));evt.AddEventHandler(obj,newEventHandler<GetXXXXXCompletedEventArgs>(Sc_GetXXXXXCompleted));怎么解决呢?