我想提供您可能沒有考慮到的另一種方法嘗試。
您可以使用委託而不是傳遞字符串;這樣,你就不需要任何反思。
在C#中有一個名爲Func<>
的預定義委託類型,可以讓您輕鬆定義要作爲委託傳遞的方法的返回類型和參數類型。
例如,Func<>
對於Math.Sin(double)
將是Func<double, double>
,因爲Math.Sin()
返回一個雙精度型並且接受雙精度型參數。
一個例子說明清楚:
using System;
namespace Demo
{
internal class Program
{
private void run()
{
Func<double, double> f1 = Math.Sin;
Func<double, double> f2 = Math.Cos;
double r1 = runFunc(f1, 1.0);
double r2 = runFunc(f2, 2.0);
Console.WriteLine(r1);
Console.WriteLine(r2);
}
private static double runFunc(Func<double, double> func, double parameter)
{
return func(parameter);
}
private static void Main()
{
new Program().run();
}
}
}
你是說,你想傳遞一個字符串並在代碼中執行該字符串? –
所以你不想使用'Actions'和'Func's? –
也許你應該提供一個你打算如何使用它的例子。也許有更好的方法,或者至少會幫助我們更好地理解你的需求 – musefan