Могу ли я получить доступ к внешним объектам класса во внутреннем классе

У меня есть три класса.

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

Я хочу получить доступ к объекту класса B в классе C, который создается классом A. Возможно ли каким-либо образом внести изменения в объект класса A класса C. Можно ли получить объект класса A, создав событие или так или иначе.

Изменить: Моя ошибка в вопросе выше. Объект B, созданный в A, является закрытым не публичным

ЭТО ВОЗМОЖНО ДЕЛАТЬ ЭТО СОЗДАНИЕ СОБЫТИЙ

Если в любом случае я смогу поднять событие, которое может обрабатываться классом A, тогда моя проблема может быть решена.

Ответ 1

Если я правильно читаю, вы хотите получить доступ к свойству objB класса A внутри innerC WITHOUT, пропуская его.

Это не так, как работают внутренние классы С#, как описано в этой статье: Вложенные классы С# похожи на вложенные классы С++, а не внутренние классы Java

Если вы хотите получить доступ к A.objB из innerC, вам придется каким-то образом передать класс A в innerC.

Ответ 2

Вам нужно передать ссылку OuterClass на InnerClass, возможно, в конструкторе, например:

public class OuterClass
{
    //OuterClass methods

    public class InnerClass
    {
        private OuterClass _outer;

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

Затем вы можете использовать эту ссылку во всех своих методах InnerClass.

Ответ 3

Так как ваш класс B находится в пределах той же области, что и класс C, то есть внутри класса A вы сможете создать экземпляр вложенного типа B из вложенного типа C и использовать его.