PDA

View Full Version : سوال: صدا زدن تابع بصورت غير مستقيم



iran400
یک شنبه 08 آذر 1388, 17:23 عصر
سلام عليكم

بنده مثلا 10 تا تابع دارم
مي خواهم يك تابع جديد ايجاد كنم كه در ورودي آن نام توابع را بدهم و اون هم تابع را اجرا نمايد.
اين كار را مي خواهم بصورت مستقيم انجام دهيم نه با دستورهاي شرطي و غيره

sethandle("a3");

private void sethandle(string functionName)
{
............................?
}


private void a1()
{
}
private void a2()
{
}
private string a3()
{
}

Reza_Yarahmadi
یک شنبه 08 آذر 1388, 18:54 عصر
با استفاده از Reflection میتونید این کارو انجام بدید.
using System.Reflection;


void SetHandle(object obj, string MethodName)
{
Type t = obj.GetType();
MethodInfo method = t.GetMethod(MethodName);
method.Invoke(obj, null);
}
obj : شئ ای که از کلاس مورد نظرتون درست کردید.
MethodName : اسم متدی که میخواید اجرا کنید.
در صورتی که متد مورد نظر پارامترهایی هم داره میتونید آرایه ای از Object رو به جای null قرار بدید.