PDA

View Full Version : سوال: به دست آوردن لیست متدهای یک کلاس



naeeme
پنج شنبه 10 مرداد 1387, 13:45 عصر
آیا این امکان وجود داره که بتونیم در یک برنامه لیست تمام متدهای public یک کلاس رو به دست بیاریم؟ یعنی متدی بنویسیم که یک کلاس رو به عنوان ورودی بگیره و لیستی از متدهای عمومی اون کلاس رو برگردونه:متفکر:

اَرژنگ
پنج شنبه 10 مرداد 1387, 13:49 عصر
آیا این امکان وجود داره که بتونیم در یک برنامه لیست تمام متدهای public یک کلاس رو به دست بیاریم؟ یعنی متدی بنویسیم که یک کلاس رو به عنوان ورودی بگیره و لیستی از متدهای عمومی اون کلاس رو برگردونه:متفکر:
بله میشه، ولی قبل از اینکه اینکار را بکنید دلیلش را هم بگید، چونکه معمولاَْ‌ کسانی که دنبال این روش هستند میخواهند که پلاگین بنویسند (منتها این روش برایه این کار زیاد مناسب نیست).

جواب سوالتان را با Reflection انجام میدند ولی بستگی به اینکه هدف واقعیتان چی هست روشهایه دیگر ممکن مناسبتر باشد.

رضا عربلو
پنج شنبه 10 مرداد 1387, 13:52 عصر
class Program
{
static void Main(string[] args)
{
foreach (System.Reflection.MemberInfo mf in (typeof(Program)).GetMethods())
{
if (mf.GetType().IsPublic)
{
}
}
}
}

naeeme
پنج شنبه 10 مرداد 1387, 14:09 عصر
بله میشه، ولی قبل از اینکه اینکار را بکنید دلیلش را هم بگید، چونکه معمولاَْ‌ کسانی که دنبال این روش هستند میخواهند که پلاگین بنویسند (منتها این روش برایه این کار زیاد مناسب نیست).

جواب سوالتان را با Reflection انجام میدند ولی بستگی به اینکه هدف واقعیتان چی هست روشهایه دیگر ممکن مناسبتر باشد.

در واقع یک dll واسط دارم می نویسم که یکسری کلاس در خودش داره و باید لیست این متدهای این کلاس ها رو دربیارم و به بیرون بفرستم.

آقای آرژنگ، شما روشهای دیگه ای هم سراغ دارین؟
خیلی تمایل دارم بدونم مثلا در چنین مواردی علاوه بر Reflection، از چه روش(ها) دیگری استفاده می کنن
تشکر
------
mf.GetType().IsPublic این رو من پیدا نکردم!

naeeme
پنج شنبه 10 مرداد 1387, 14:12 عصر
class Program
{
static void Main(string[] args)
{
foreach (System.Reflection.MemberInfo mf in (typeof(Program)).GetMethods())
{
if (mf.GetType().IsPublic)
{
}
}
}
}


به جای

foreach (System.Reflection.MemberInfo mf in (typeof(Program)).GetMethods())

باید این رو نوشت

foreach (System.Reflection.MethodInfo mf in (typeof(Program)).GetMethods())

باز هم تشکر از دوستان

اَرژنگ
پنج شنبه 10 مرداد 1387, 19:00 عصر
در واقع یک dll واسط دارم می نویسم که یکسری کلاس در خودش داره و باید لیست این متدهای این کلاس ها رو دربیارم و به بیرون بفرستم.

آقای آرژنگ، شما روشهای دیگه ای هم سراغ دارین؟
خیلی تمایل دارم بدونم مثلا در چنین مواردی علاوه بر Reflection، از چه روش(ها) دیگری استفاده می کنن
تشکر
------
mf.GetType().IsPublic این رو من پیدا نکردم!
دلیل اینکه این dll واسط (فکر کنم منظورتان اسمبلی است) لیست متدها را دربیاره و بیرون بفرسته برایه چه کاریه؟ به طور معمولی وقتی که اسمبلی در کد استفاده میشه متدهایه پابلیک کلاسهایه پابلیک قابل دسترسی هستند.
یک روش دیگر استفاده از اینترفیس است، که دقیقا برایه در اطلاع دادن قابلیتها بکار میرند.