У меня есть класс, который я хотел бы унаследовать. т.е. ExpenseForm должен наследоваться от Spreadsheet. Электронная таблица предоставлена третьей стороной: я не могу ее изменить.
Но экземпляры родительского класса обычно генерируются статическим методом:
Spreadsheet myExpenses = Spreadsheet.Open(filename);
(И Spreadsheet реализует iDisposable, так что вышеприведенный оператор находится на самом верху раздела использования, но я не думаю, что это действительно влияет на это.)
Я бы хотел иметь
ExpenseForm myExpenses = ExpenseForm.Open(filename);
Конечно, это не получается, поскольку ExpenseForm.Open (унаследованный от Spreadsheet) возвращает объект Spreadsheet.
Какой лучший способ решить это? Может быть, методы расширения? (У меня нет опыта работы с ними.)
Я пошел в другом направлении; ExpenseForm теперь имеет экземпляр Spreadsheet. (Это кажется немного запутанным, так как я должен следить за моими одноразовыми предметами, чтобы убрать, когда я закончу.) Но, похоже, мне не хватает способа решить исходную проблему наследования.