今日のインタビュー (ジュニア Web 開発者) で、インタビュアーは私にこの質問をしました:
名前が文字列の場合にメソッドを実行する方法 (javascript および C# で)
答えられません:(
今検索すると、この質問が見つかりました
しかし、これをC#でどのように行うのですか??
メソッドの名前だけを持っている場合は、.net Relfection
そのメソッドを実行するためだけに使用できます。
チェック:MethodBase.Invokeメソッド(Object、Object [])
また
例 :
class Class1
{
public int AddNumb(int numb1, int numb2)
{
int ans = numb1 + numb2;
return ans;
}
[STAThread]
static void Main(string[] args)
{
Type type1 = typeof(Class1);
//Create an instance of the type
object obj = Activator.CreateInstance(type1);
object[] mParam = new object[] {5, 10};
//invoke AddMethod, passing in two parameters
int res = (int)type1.InvokeMember("AddNumb", BindingFlags.InvokeMethod,
null, obj, mParam);
Console.Write("Result: {0} \n", res);
}
}
タイプがあると仮定すると、リフレクションを使用して、その名前でメソッドを呼び出すことができます。
class Program
{
static void Main()
{
var car = new Car();
typeof (Car).GetMethod("Drive").Invoke(car, null);
}
}
public class Car
{
public void Drive()
{
Console.WriteLine("Got here. Drive");
}
}
呼び出すメソッドにパラメーターが含まれている場合は、引数をオブジェクト配列Invoke
としてメソッドシグネチャと同じ順序で渡すことができます。
var car = new Car();
typeof (Car).GetMethod("Drive").Invoke(car, new object[] { "hello", "world "});
良い記事。よくお読みください。文字列だけでなく、多くのシナリオからメソッドを呼び出すことができます。
http://www.codeproject.com/Articles/19911/Dynamically-Invoke-A-Method-Given-Strings-with-Met