在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
假设1我有个类叫SortClass,类中有个BubbleSort(int[] array)用于给数组进行排序。 假设2我有个类叫SortT<T>,类中有个BubbleSort(T[] array)用于给数组进行排序。 现在我需要在控制台应用程序里通过反射调用BubbleSort方法为数组int[] array进行排序。 int[] array = new int[] { 1,7,98,165,4,8,97 }; 假设1中由于类和方法不是泛型,实现起来比较简单,我就不多说了。具体代码如下: 需要反射的类的代码: public class SortClass 控制台中代码如下: Console.WriteLine(assembly.FullName); Object oo = assembly.CreateInstance( "SortClasses.SortClass" ); //得到对象SortClasses为命名空间名 MethodInfo methodinfo = assembly.GetType( "SortClasses.SortClass").GetMethod( "BubbleSort" ); //得到方法 Object obj = methodinfo.Invoke(oo, new object[] { array }); //调用方法,给参数,得到结果 for (int i = 0; i < arrty.Length; i++)
假设2 需要反射的是一个泛型,百度谷歌了很久才找到我想要的答案。有些代码我也还很不理解。唉,还得继续研究理解下。 需要反射的类的代码: public class SortT<T>where T:IComparable 控制台中代码如下: Assembly assembly = Assembly.LoadFrom( @"F:\HomeWork\C#\反射例子\反射\SortClasses\bin\Debug\SortClasses.dll" ); Console.WriteLine(assembly.FullName); Type type = assembly.GetType( "SortClasses.SortT`1" ); //得到此类类型 注:(`1) 为占位符 不明确类型 Type t = type.MakeGenericType(typeof(int)); //指定泛型类 object obj = assembly.CreateInstance(t.FullName); //创建其实例 MethodInfo mi = t.GetMethod( "BubbleSort" ); //调用方法 object [] argss = { array }; //参数 object returnValue = mi.Invoke(obj, argss); // 触发此方法
假设2中出自博客园中http://m.cnblogs.com/67560/1683466.html的代码 其它参考资料:http://msdn.microsoft.com/zh-cn/library/ms173128(VS.80).aspx |
请发表评论