دوستان عزیز در کد زیر در خط 3 برنامه دارای خطا میباشد
1- object obj = new form1
2- type t=obj.gettype()
3- string formname = ((t)obj).name
چه راه حلی پیشنهاد میکنید ؟
حتما هم میخوام t را بصورت داینامیک بگیرم چون اسم فرمهارو نمیخوام یکی یکی بدم
دوستان عزیز در کد زیر در خط 3 برنامه دارای خطا میباشد
1- object obj = new form1
2- type t=obj.gettype()
3- string formname = ((t)obj).name
چه راه حلی پیشنهاد میکنید ؟
حتما هم میخوام t را بصورت داینامیک بگیرم چون اسم فرمهارو نمیخوام یکی یکی بدم
آخرین ویرایش به وسیله memolove2 : سه شنبه 28 دی 1389 در 19:45 عصر
میشه بیشتر توضیح بدی اصلا میخواهی چیکار کنی میشه کل برنامه را آپلود کنی
ببینید فکر کنید 2تا فرم داریم که مثلا در فرم 1 یه property تعریف کردیم به صورت زیر
publicbool ready
{
get { return mbPiReady; }
}
حالا در Form2 میخوایم این propertio استفاده کنیم که معمولا از این روش استفاده میشه
From frm;
((form1)frm).ready
اما من نمیخوام form1 را بصورت استاتیک یا دستی پشت frm برای cast کردن قرار بدم
به علت اینکه تعداد فرم ها زیاده و همه دارای property ready هستند میخوام که داینامیک کار انجام بشه
یعنی تقریبا یه چیزی شبیه کد زیر بشه
Form1 frm = new form1;
((typeof(frm)frm).ready
شما برای این کار از اینترفیس استفاده کنی خیلی بهتره
اول بیا یه اینترفیس مثلا به نام IForm تعریف کن
تو این اینترفیس متدها و خصوصیات مورد نظرت رو تعریف کن
سپس همه فرم هاتو ازش ارث بری کن
هنگام cast کردن هم کافیه که فرم مورد نظر رو به همون IForm کست کنی و از خصوصیتش استفاده کنی
البته روش های دیگه استفاده از Generic یا Reflection هست
ممنون از دوستایی که راهنمایی کردن من تونستم راه حلی پیدا کنم برای اینکار
اینجا میزارم که اگه کسی برخورد به این مشکل بتونه استفاده کنه
Type t = form.GetType();
object obj = form;
PropertyInfo props = t.GetProperty(نام پروپرتی);
object Gobj = props.GetValue(obj, null);
برای set کردن هم از دستورات زیر استفاده کنید
Type t = form.GetType();
object obj = form;
PropertyInfo props = t.GetProperty(نام پروپرتی);
props.SetValue(obj, Value, null);