PDA

View Full Version : اجرای متد یکسان از چند کلاس



msn_vb
سه شنبه 20 مرداد 1388, 22:24 عصر
سلام
من یک Query از دیتابیس میگیرم که لیستی از کلاس ها رو به من میده
حالا من میخوام متدی به نام Test که توی همه این کلاس ها وجود داره تک تک اجرا بشه
چطوری میتونم به اینصورت متد ها رو اجرا کنم ؟ ( یعنی اسم کلاس رو من به صورت رشته دارم )

seven7777777
چهارشنبه 21 مرداد 1388, 01:30 صبح
البته فکر نمی کنم این راه استاندارد باشه ولی خوب دیگه :
می تونی لیستی از کلاس هات رو در یک آرایه قرار بدی و بعد در یک Switch چک کنی ، کلاسی که از دیتابیس اومده اگه مثلا با محتویات اولین اندیس آرایه یکی بود ، متد کلاس مربوط به اونو اجرا کن .

البته شاید با مواردی مثل Assembly ها که من هیچی ازش نمی دونم بشه یه کارایی کرد . همون هایی که با داشتن نام یک فرم می تونن فرم رو بسازن .:لبخند:

daneshjoo2
چهارشنبه 21 مرداد 1388, 01:43 صبح
سلام
می تونید به راحتی با استفاده از Reflection این کار رو انجام بدید:


System.Type oType = System.Type.GetType("Namespace.ClassName");
oType.GetMethod("Test").Invoke(Activator.CreateInstance(oType), new object[] { });

msn_vb
چهارشنبه 21 مرداد 1388, 14:01 عصر
ظاهرا به این ترتیب فقط میشه کلاس های .Net رو استفاده کرد
و کلاس های جدیدی که خودمون مینویسیم به این روش دسترسی نداریم
ولی با Assembly.LoadFile میشه یک فایل dll ارسال کرد و از متد ها و خصوصیات اون استفاده کرد
ولی مشکل اینجاست که اون کلاسی که من اسمش رو به صورت رشته دارم و قراره به صورت dll در بیاد از کلی از کلاس های داخل برنامه استفاده میکنه و باید همه اونا رو هم به dll اضافه کنم
با این وضعیت من هر dll جدید بخوام بسازم تمام این کلاس ها رو باید بهش اضافه کنم
فکر میکنم روش جالبی نباشه که این همه فایل تکراری توی هر dll ام داشته باشم
روشی نیست که از بشه از یک فایل cs بجای فایل dll استفاده کرد یا اینکه از کلاس های جدید ساخته شده بشه استفاده کرد ؟