簡體   English   中英

如何通過名稱和參數類型在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;
}

注意 :您還可以通過編程方式迭代內容,並通過啟發式找到所需的類和方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM