如何通过名称和参数类型在 C# 程序集中查找函数?

How to find a function in an assembly in C# by its name and argument types?

我有一个托管程序集 'some.dll'、一个函数名和它作为参数的类型作为输入。如何在 运行 时间使用 .NET C# 4.6 应用程序找到此类函数?

如果我没理解错的话,你是在寻求反思

这是一个完全不现实的例子。不过

给定

// Assembly1.dll
namespace TestAssembly
{
   public class Main
   {
      public void Run(string parameters)
      {
         // Do something... 
      }
      public void TestNoParameters()
      {
         // Do something... 
      }
   }
}

你可以做到

public object Test(string methodName)
{
   var assembly = Assembly.LoadFile("...Assembly1.dll");
   var type = assembly.GetType("TestAssembly.Main");

   if (type == null)
   {
      return null;
   }

   var methodInfo = type.GetMethod(methodName);

   if (methodInfo == null)
   {
      return null;
   }

   var parameters = methodInfo.GetParameters();
   var classInstance = Activator.CreateInstance(type, null);

   if (parameters.Length == 0)
   {
      methodInfo.Invoke(classInstance, null);
   }
   else
   {
      var parametersArray = new object[] { "Hello" };           
      return  methodInfo.Invoke(classInstance, parametersArray);
   }

   return null;
}

注意:您也可以通过编程方式迭代内容,并启发式地找到您正在寻找的 类 和方法