【发布时间】:2019-11-23 07:42:27
【问题描述】:
我有类MainModel 和内部类MainModelBase、ContractModel、WorkerModel。最后两个基本相同。它们的区别在于两种方法的执行方式和一些方法的返回值。
DeleteContract() 和 DeleteWorker() 是不同的代码(LoadPage() 也是)。但是ReloadPage()、FirstPage() 等等 - 是一样的。返回值的差异。
我可以将此移植代码简化为MainModelBase 吗?有意义吗?
整个代码超过 300 行。所以这里的结构。完整代码here
public class ContractModel : MainModelBase
{
public ContractModel()
internal bool DeleteContract(int id)
internal List<ContractTableRow> ReloadPage()
internal List<ContractTableRow> FirstPage()
internal List<ContractTableRow> LastPage()
internal List<ContractTableRow> NextPage()
internal List<ContractTableRow> PreviousPage()
internal List<ContractTableRow> CustomPage(int customPage)
private List<ContractTableRow> LoadPage()
}
public class WorkerModel : MainModelBase
{
public WorkerModel()
internal bool DeleteWorker(int id)
internal List<WorkerTableRow> ReloadPage()
internal List<WorkerTableRow> FirstPage()
internal List<WorkerTableRow> LastPage()
internal List<WorkerTableRow> NextPage()
internal List<WorkerTableRow> PreviousPage()
internal List<WorkerTableRow> CustomPage(int customPage)
private List<WorkerTableRow> LoadPage()
}
public class MainModelBase
{
private int count;
internal int MaxPage
internal int MinPage
internal int Count
internal int Size
internal int Page
internal string NumPageText
internal void Added()
private int GetMaxPage()
}
更新
方法CustomPage() 调用LoadPage(),但它对每个类都不同(Delete() 也是)。
这样做对吗?
public class ContractModel : PagedModelBase<ContractTableRow>
{
public ContractModel()
internal override bool Delete(int id)
internal override List<ContractTableRow> LoadPage()
}
public class WorkerModel : PagedModelBase<WorkerTableRow>
{
public WorkerModel()
internal override bool Delete(int id)
internal override List<WorkerTableRow> LoadPage()
}
public abstract class PagedModelBase<T>
{
internal void Added()
internal abstract bool Delete(int id);
internal List<T> ReloadPage()
internal List<T> FirstPage()
internal List<T> LastPage()
internal List<T> NextPage()
internal List<T> PreviousPage()
internal List<T> CustomPage(int customPage)
internal abstract List<T> LoadPage();
private int GetMaxPage()
}
【问题讨论】:
标签: c# class inheritance return