Могу ли я получить доступ к внешним объектам класса во внутреннем классе
У меня есть три класса.
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 и использовать его.