Я получил много кода, но сама проблема очень ясно для меня, так что я отправляю пример:Создание подкласса | StackOverflowException
public class ExcelTable
{
public ExcelTable() // CONSTRUCTOR
{
// create new excel-application and so on..
}
public ExcelOutput Output = new ExcelOutput(); // Stackoverflowexception
private xlWorkbook; // I need these to inherit into ExcelOutput
private xlWorksheet; // '' ''
// ... // '' ''
public class ExcelOutput : ExcelTable
{
public void SaveAs()
{
// self explaining
}
public void Show()
{
// self explaining
}
public void Print()
//....
}
}
Цель: EDITED
В целях четкого helping- класс для моего желания заключается в создании подкласса, который заботится о возможном выходе. В деталях я пытаюсь предотвратить создание двух экземпляров извне =>ExcelTable
и ExcelOutput
. Im скорее хотел бы создать один экземпляр ExcelTable
и получить доступ к подклассу с этим экземпляром. Поскольку мне нужно наследование, я не могу установить класс в static.
Проблема:
Im получение Stackoverflowexception
. Я попытался отладить мой код. При создании кода ExcelOutput
код перебирается в одну строку. Значения: Даже если я пытаюсь выполнить одноэтапный (F11), выполнение остается в процессе инициализации ExcelOutput, который приводит мой инструмент к исключению Stackoverflowexception.
Что я пробовал:
public ExcelTable() // CONSTRUCTOR
{
// create new excel-application and so on..
Output = Output ?? new ExcelOutput();
}
public ExcelOutput Output;
В этом случае ExcelTable
создается снова и снова. Все это высший класс получает навсегда.
Так может кто-нибудь объяснить мне, почему эта единственная строка зацикливается навсегда? Похоже, что экземпляр ExcelOutput
создает новый экземпляр ExcelTable
.
Я знаю, что это больше о знании, так как я новичок в случае наследования и подклассов. Google не был большой помощью здесь. Там слишком много материала в соответствии с классами, подклассами и наследованием.
Всякая помощь приветствуется. Большое спасибо!
'ExcelOutput' наследует от' ExcelTable', поэтому он наследует переменную 'Output'. –
@YacoubMassad О да, истинная вещь, о которой я не думал. Но это уже вызывает мою проблему? – C4u
@ C4ud3x, да, вот что вызывает проблему. – EduardoS