两个相似的类,应该做哪些工作?

时间:2010-08-02 18:22:50

标签: .net linq-to-sql oop

我有两节课。一个是linq-to-sql类,另一个是可序列化的数据转储类。

示例:

Class TableNotes ID 用户身份 NoteText ......功能

[序列化] Class NoteDump NoteText ......功能


他们都会分享一套共同的功能。我认为最好不要复制此功能,因此仅将其添加到TableNotes。我将仅将NoteDump对象用于转储数据。

问题是,我想将NoteDump转换为TableNotes。哪个类应该处理转换,为什么?即TableNotes可以使用NoteDump或NoteDump可以返回TableNotes类型的新对象..或者我可以使用转换运算符。

3 个答案:

答案 0 :(得分:1)

真的,选择权归你的。我个人会在课堂上使用“FromXXXX”惯例。在这种情况下,它将是TableNotes上的一种方法:

static TableNotes FromNoteDump(NoteDump noteDump)
{
    // conversion
}

如果你需要它们来回转换(或者你认为可能会有类似结构的未来类),请考虑从基类或接口继承。

答案 1 :(得分:1)

LINQ在各种类上实现AsQueryableAsEnumerable

您可以在AsNoteDump()课程上实施TableNotes ...

NoteDump noteDump = new TableNotes().AsNoteDump();

答案 2 :(得分:0)

第三类的工作是隐藏其他课程的呢?

  • 您可以让第三堂课完成任何这些课程之间的所有转换。
  • 如果你只使用所有其他代码中的第三个类,通过构建你需要的任何接口,从较低的两个类到第三个类,你将有效地抽象出这个类的多个版本的事实。其余的代码。