在本文中,我们将讨论如何通过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
