Замена передачи this

126
23 августа 2019, 22:50
class BaseClass
{
    public void Create()
    {
        ChildClass child = new ChildClass(this);
    }
    class ChildClass
    {
        private BaseClass _baseClass;
        public ChildClass(BaseClass baseClass)
        {
            _baseClass = baseClass;
        }
    }
}

Можно ли получить BaseClass в ChildClass без передачи его в конструктор?

Answer 1

Можно ли получить BaseClass в ChildClass без передачи его в конструктор?

Нет нельзя.

Если и есть какие-то хаки, то они убивают производительность.

Answer 2

Вы, вероятно, исходите из соображений, что объект вложенного класса не может существовать без объекта объемлющего. Но в общем случае это не так. Например, можно передать null в конструктор ChildClass, объект вложенного класса при этом создастся, но экземпляра объемлющего класса для него не предоставлено.

Можно, я думаю, через рефлексию получить название объемлющего класса внутри вложенного. Но вам же нужен не класс, а именно его экземпляр. А подобного рода отношению как раз и задаются вашим (пользовательским) кодом, а не какой-то встроенной архитерктурной особенностью фреймворка.

Таким образом, без явной передачи экземпляра в общем случае не обойтись.

READ ALSO
C# форма и 2 tcpserver [закрыт]

C# форма и 2 tcpserver [закрыт]

Нужен совет реализации след структуры1) форма 2) поток с таймером

115
Проверка правильного количества скобок в тексте

Проверка правильного количества скобок в тексте

Как проверить что в тексте каждый '(' закрыт ')'?

139
Как работает метод HasFlag в C#, и можно ли его заменить методом equals() в java?

Как работает метод HasFlag в C#, и можно ли его заменить методом equals() в java?

Я только учусь, поэтому вопрос может и глупыйНе судите строго

148