在本文中,我们将讨论如何通过C#中的反射执行程序集的非静态方法。
我们可以获得组件中可用方法的元数据,但也可以使用反射执行组件的非静态方法。
要调用非静态方法,我们需要创建对象,然后通过对象来调用我们可以调用非静态方法,我们知道我们无法直接其中创建对象。
因此,我们将获得构造函数信息并通过它来获取对象和通过该对象,我们将调用非静态方法,并将其通过传递参数来执行,因为我们知道当我们创建构造函数时是自动调用的。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace reflection { class Program { static void Main(string[] args) { Assembly asm = Assembly.LoadFrom(@"D:\meghawebsite\reflassm\reflassm\bin\Debug\reflassm.dll"); Type[] type = asm.GetTypes(); foreach (Type t in type) { if (t.Name == "mycls") { MethodInfo[] minfo = t.GetMethods(); foreach (MethodInfo m in minfo) { if (m.Name == "show") { ConstructorInfo[] cinfo = t.GetConstructors(); object clsobj = cinfo[0].Invoke(null);//调用构造函数以返回对象 Object[] ob = new object[] {10};//该方法只有一个int类型的参数。 m.Invoke(clsobj, ob);//通过传递两个参数来调用方法,一个是object,另一个是它的参数值 } } } } Console.ReadLine(); } } }
日期:2020-04-11 23:03:46 来源:oir作者:oir