【发布时间】:2013-08-23 21:43:09
【问题描述】:
我有一个涉及继承的复杂情况。我有一个基础 DataObject 类,我的 Invoice 类继承自该类。我想使用DataObject save 方法保存Invoice 对象,然后返回刚刚保存的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 对象。我什至不确定这是否可能,但我真的希望是的。
【问题讨论】:
-
我不确定这是否是您想要的,您必须在 InvoiceObject 中实现 Save() 并从那里调用 base.Save()。并且不要从 Invoice 返回 base.Save(),而是从 Invoice 返回 this?
-
你能用接口代替类继承吗?
-
我更喜欢使用继承,因为这将允许我实现一次保存并根据需要在继承树的下方进行更改。
-
@Peter 差不多但不完全。我不想将
Invoice指定为DataObject。我只想指定Invoice是InvoiceObject并且从扩展名是DataObject
标签: c# asp.net inheritance