У меня сложная ситуация с наследованием. У меня есть базовый класс DataObject
, который наследует мой класс Invoice
. Я хочу сохранить объект Invoice
с помощью метода сохранения DataObject
, а затем вернуть объект Invoice
, который был только что сохранен.Сложная ситуация наследования. Возвращаемый базовый объект из производного класса
public abstract class DataObject {
public virtual DataObject Save() {
// Save data
return this;
}
}
производные классы
public class InvoiceObject : DataObject {
// base data for the class goes here
}
public class Invoice : InvoiceObject {
public override DataObject Save() {
// Somehow return an Invoice object here
return base.Save();
}
}
Я хочу, чтобы избежать использования слепки, если это возможно. Любое понимание было бы полезно. Для аргументации структура должна оставаться неизменной. Я не могу удалить объект InvoiceObject
, а метод Save
должен вернуть весь объект Invoice
, который был сохранен в базе данных. Я даже не уверен, что это возможно, но я действительно надеюсь, что это так.
Я не уверен, если это то, что вы хотите, вы должны реализуйте Save() в InvoiceObject и вызовите base.Save() оттуда. и не возвращать base.Save() из счета-фактуры, вместо этого возвратите это из счета-фактуры? – Siva
Можете ли вы использовать интерфейс вместо наследования классов? – Dan
Я бы предпочел использовать наследование, так как это позволит мне реализовать «Сохранить один раз» и изменить его по мере необходимости дальше по дереву наследования. – coryrwest