نمایش نتایج 1 تا 5 از 5

نام تاپیک: dynamic cast in runtime

  1. #1

    dynamic cast in runtime

    دوستان عزیز در کد زیر در خط 3 برنامه دارای خطا میباشد

    1- object obj = new form1
    2- type t=obj.gettype()
    3- string formname = ((t)obj).name


    چه راه حلی پیشنهاد میکنید ؟
    حتما هم میخوام t را بصورت داینامیک بگیرم چون اسم فرمهارو نمیخوام یکی یکی بدم
    آخرین ویرایش به وسیله memolove2 : سه شنبه 28 دی 1389 در 19:45 عصر

  2. #2

    نقل قول: dynamic cast in runtime

    میشه بیشتر توضیح بدی اصلا میخواهی چیکار کنی میشه کل برنامه را آپلود کنی

  3. #3

    نقل قول: dynamic cast in runtime

    ببینید فکر کنید 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



  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    آستارا-تهران
    پست
    357

    نقل قول: dynamic cast in runtime

    شما برای این کار از اینترفیس استفاده کنی خیلی بهتره
    اول بیا یه اینترفیس مثلا به نام IForm تعریف کن
    تو این اینترفیس متدها و خصوصیات مورد نظرت رو تعریف کن
    سپس همه فرم هاتو ازش ارث بری کن
    هنگام cast کردن هم کافیه که فرم مورد نظر رو به همون IForm کست کنی و از خصوصیتش استفاده کنی
    البته روش های دیگه استفاده از Generic یا Reflection هست

  5. #5

    نقل قول: dynamic cast in runtime

    ممنون از دوستایی که راهنمایی کردن من تونستم راه حلی پیدا کنم برای اینکار
    اینجا میزارم که اگه کسی برخورد به این مشکل بتونه استفاده کنه

    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);

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •