[英]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.