C#中的组件的非静态方法

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