شرح - oop in c#




هل يمكنني الوصول إلى الأجسام الخارجية في الطبقة الداخلية (2)

لدي ثلاث فئات من هذا القبيل.

class A
{
    public class innerB
       {
       //Do something
       }

    public class innerC
       {
        //trying to access objB here directly or indirectly over here. 
        //I dont have to create an object of innerB, but to access the object created by A
        //i.e.
             innerB objInnerB = objB;
        //not like this
             innerB objInnerB= new innerB();
       }

private innerB objB{get;set;}  **//Private**

public A()
   {
    objB= new innerB();
   }
}

أريد الوصول إلى كائن الفئة ب في الفئة C الذي تم إنشاؤه بواسطة الفئة أ. هل من الممكن إجراء تغييرات بطريقة ما على كائن الفئة أ في الفئة C. هل يمكنني الحصول على كائن الفئة أ من خلال إنشاء حدث أو بطريقة أو بأخرى.

تحرير: خطأي في طرح السؤال أعلاه. كائن B التي تم إنشاؤها في A هو خاص ليس العامة

هل من الممكن القيام بذلك من خلال خلق الحدث

إذا على أي حال أصبحت قادرة على رفع الحدث الذي يمكن التعامل معها من قبل الفئة أ، ثم مشكلتي يمكن حلها.


بما أن صفك B يقع ضمن نفس نطاق الفئة C، أي ضمن الفئة A، ستتمكن من إنشاء النوع B المتداخل من النوع C المتداخل واستخدامه.


تحتاج إلى تمرير مرجع من OuterClass ل InnerClass ، ربما في منشئ، مثل:

public class OuterClass
{
    //OuterClass methods

    public class InnerClass
    {
        private OuterClass _outer;

        public InnerClass(OuterClass outer)
        {
            _outer = outer;
        }
    }
}

ثم يمكنك استخدام هذا المرجع في كافة أساليب InnerClass .





delegates