تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 10 از 10

نام تاپيک: ;كلاس در كلاس در كلاس ....

  1. #1
    داره خودمونی میشه rz_assar's Avatar
    تاريخ عضويت
    May 2008
    پست ها
    57

    پيش فرض ;كلاس در كلاس در كلاس ....

    سلام دوستان
    من يك كلاس دارم بنام كلاس 1
    و يك كلاس ديگه بنام كلاس 2
    و داخل كلاس1 يه متد از يه كلاس ديگه رو استفاده كردم
    حالا ميخام داخل متدم به شي از لاس 2 دسترسي داشته باشم (اين شي در كلاس form ايجاد شده)
    شما راه حلي به ذهنتون نميرسه ؟


  2. #2
    داره خودمونی میشه mrhamidifar's Avatar
    تاريخ عضويت
    Feb 2006
    پست ها
    30

    پيش فرض

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

  3. #3
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    من يك كلاس دارم بنام كلاس 1
    و يك كلاس ديگه بنام كلاس 2
    و داخل كلاس1 يه متد از يه كلاس ديگه رو استفاده كردم
    حالا ميخام داخل متدم به شي از لاس 2 دسترسي داشته باشم
    اصولاً بحث شما هیچ ربطی به تو در تو بودن کلاسسها ندارد.
    شما برای صدا زدن متدهای کلاس و یا دسترسی به اعضا باید اشاره گر کلاس را داشته باشید.
    یا اینکه متدهای و اعضا static باشد (VB-Shared) تا نیازی به اشاره گر نداشته باشد.
    به کد زیر دقت کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    در این کلاس Class2 از متد AAA مربوط به Class1 استفاده میکند.
    این استفاده را
    یک بار در متد BBB خود و با کمک اشاره گری که از سازنده اش در CContainer تحویل گرفته بود، استفاده میکند.
    یک بار هم در متد CCC خود و با کمک یک اشاره گر محلی که خودش ساخته استفاده میکند.

    در مورد متد BBB همانطور که واضح است، کلاسس اصلی CContainer اول از Class1 نمونه سازی میکند (New) و بعد از Class2 و در حین نمونه سازی Class2 اشاره گر Class1 را هم برای استفاده آتی به Class2 تحویل میدهد.

    اگر روی مثال فوق مشکلی دارید روی همین مثال بپرسید تا منظورتان هم شهودی و بهتر قابل فهم شود و راحت تر و دقیق تر من و یا سایر دوستان بتوانیم جواب دهیم.
    (به اشاره گر فکر کنید، یا اشاره گر (بسازید و منتقل کنید و...) یا بدون اشاره گر و با عضو static)

  4. #4
    داره خودمونی میشه rz_assar's Avatar
    تاريخ عضويت
    May 2008
    پست ها
    57

    پيش فرض

    دوست عزيز مشكل من اينجاست كه form1 طراحي كردم و داخل اون كلاسهاي لايه business Logic رو كه توي يه dll هست استفاده كردم
    چيزي كه مسلمه من توي form1 ‏ ‏در قسمت usingها dll مربوط به لايه بيزنس لاجيك رو اضافه كردم و كامپيوتر اجازه نميده كه توي لايه بيزنس using form1 بنويسم چون ممكنه وابستگي چرخشي پيش بياد
    پس توابع و كلاسهاي لايه بيزنس نميتونند form1 رو ببينند ولي form1 ميتونه
    حالا من توي يكي از توابع لايه بيزنس ميخام يه اخطار به كاربر بدم ولي 1- ميخام notify icon اين كارو برام بكنه نه MessageBox
    2- اگه توي لايه بيزنس دست به چنين كاري بزنم (حتي اگه بشه چنين كاري هم كرد) حرفه اي نيست
    من چييييييييييييييييكااااااا اااااااار كنننمممممممممممم ااااااااااخخخخخخههههههههه ؟؟؟؟؟

  5. #5
    داره خودمونی میشه rz_assar's Avatar
    تاريخ عضويت
    May 2008
    پست ها
    57

    پيش فرض

    دوست عزيز مشكل من اينجاست كه form1 طراحي كردم و داخل اون كلاسهاي لايه business Logic رو كه توي يه dll هست استفاده كردم
    چيزي كه مسلمه من توي form1 ‏ ‏در قسمت usingها dll مربوط به لايه بيزنس لاجيك رو اضافه كردم و كامپيوتر اجازه نميده كه توي لايه بيزنس using form1 بنويسم چون ممكنه وابستگي چرخشي پيش بياد
    پس توابع و كلاسهاي لايه بيزنس نميتونند form1 رو ببينند ولي form1 ميتونه
    حالا من توي يكي از توابع لايه بيزنس ميخام يه اخطار به كاربر بدم ولي 1- ميخام notify icon اين كارو برام بكنه نه MessageBox
    2- اگه توي لايه بيزنس دست به چنين كاري بزنم (حتي اگه بشه چنين كاري هم كرد) حرفه اي نيست
    من چييييييييييييييييكااااااا اااااااار كنننمممممممممممم ااااااااااخخخخخخههههههههه ؟؟؟؟؟

  6. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    ..كامپيوتر اجازه نميده كه توي لايه بيزنس using form1 بنويسم..
    درسته، ولی فقط VS در حالتی که بخواهید Refrence یک پروزه را add کنید این خطا را میدهد.
    یعنی اگر شما کامپایل کنید بعد میتوانید اسمبلی کامپایل شده را add کنید!!!!!
    البته طبیعی است که کار جالبی نیست و اگگر هم انجام دهید مدام باید دستی و با تغییر پروزه آن را کامپایل کنید و به پروزه دیگر تحویل دهید...
    شدنی است ولی دردسرش زیاد است.

    =====

    به نظر من یک event میتواند راه حل مشکل باشد.
    یعنی اگر من بودم یک event مثلاً با نام NewMessage و پارامترهای لازم برای کلاسسم درست میکردم و بعد در form1 که کلاس را new میکردم handler این رویداد را هم به متدی خصوصی در همان form1 قلاب میکردم و بعد هم در این متد و داخل form1 ، وظیفه لایه کاربری ام را به نحو مطلوب انجام میدادم.

    فکر میکنم متوجه منظورم شده باشد و نیازی به کد #C یا VB نباشد.

  7. #7
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    راستی داشت یادم میرفت.
    اگر این پیغامتان جنبه گزارش خطا را دارد و در ریسمانی مجزا هم اجرا نمیشود،
    1)
    شاید بتوانید در متد مورد نظر یک bool یا int برگردانید که مشخص کننده صحت انجام عملیات باشد و لایه بالاتر بر اساس آن در مورد نمایش پیغام مناسب تصمیم بگیرد.
    2)
    البته راه رسمی برای گزارش خطاها وقع Exception با دستور throw و با پیغام مناسب است، که لایه بالاتر با ساختار try-catch آن را هندلر میکند و حتی میتواند یک راست اقدام به نمایش متن خطا بکند.

  8. #8
    داره خودمونی میشه rz_assar's Avatar
    تاريخ عضويت
    May 2008
    پست ها
    57

    پيش فرض

    اولا از توجه شما متشكرم
    ثانيا متاسفانه برنامه لايه بيزينس در يك ريسمان جداگانه است
    ثالثا نميخام پاي exception وسط كشيده بشه چون اطلاعات مهمي در حال تجزيه و تحليله كه در صورت بروز exception همش از بين ميره و هيچگنه قابل بازيابي نيست
    حالا زاهي به ذهنتون ميرسه ؟
    البته من هنوز راه كامپايل كردن و .... امتحان نكردم
    مممممممنننوووون

  9. #9
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    حالا زاهي به ذهنتون ميرسه ؟
    خوب نظرتان راجب event چیست؟

    پست 6:
    یعنی اگر من بودم یک event مثلاً با نام NewMessage و پارامترهای لازم برای کلاسسم درست میکردم و بعد در form1 که کلاس را new میکردم handler این رویداد را هم به متدی خصوصی در همان form1 قلاب میکردم و بعد هم در این متد و داخل form1 ، وظیفه لایه کاربری ام را به نحو مطلوب انجام میدادم.

    فکر میکنم متوجه منظورم شده باشد و نیازی به کد #C یا VB نباشد.

  10. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  11. #10
    داره خودمونی میشه rz_assar's Avatar
    تاريخ عضويت
    May 2008
    پست ها
    57

    پيش فرض

    تشكر فراوان
    آقا مشكل با event حل حل حل حل حل شد
    خاطرتان عزيز
    سرافراز باشي

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •