如何合并两个类

时间:2014-12-10 12:06:44

标签: c# oop

在我的项目中,我有两个课程:文章和新闻。其中的一些字段是相同的。例如:标题,文本,关键字,MemberID,日期。

我创建了一个界面并在其中放入相同的字段。这是正确的吗?

interface ITextContext
{
    public int ID { get; set; }
    public int Title { get; set; }
    public string Text { get; set; }
    public DateTime Date { get; set; }
    List<Keyword> Keywords;

}

public class Article:ITextContext
{
    public int ArticleID { get; set; }
    public bool IsReady { get; set; }
}

public class NewsArchive:ITextContext
{
    public int NewsArchiveID { get; set; }
}

3 个答案:

答案 0 :(得分:0)

没关系,假设您不想在类之间共享任何实现细节。例如,如果要向TextContext添加一个将由Article和NewsArchive使用的方法,则需要从公共基类继承:

public class TextContext
{
    public int ID { get; set; }
    public int Title { get; set; }
    public string Text { get; set; }
    public DateTime Date { get; set; }
    List<Keyword> Keywords;    

    public string SomeMethod()
    {
        return string.Format("{0}\r\n{1}", Title, Text);
    }
}

public class Article : TextContext
{
   ...
}

答案 1 :(得分:0)

在当前实现中,ITextContext中定义的属性必须实际在ArticleNewsArchive中实现才能编译。这将是有效的,但不会导致代码重用,另一方面,这不是接口的目的。

答案 2 :(得分:0)

如果您只需要共享事件,索引器,方法和属性而不实现,则应使用接口。

如果你需要共享一些实现,你可以像使用接口一样使用抽象类(抽象类不能实例化)

public abstract class TextContext
{
    public int ID { get; set; }
    public int Title { get; set; }
    public string Text { get; set; }
    public DateTime Date { get; set; }
    List<Keyword> Keywords;

   public int PlusOne(int a){
       return a+1;
   }

}

public class Article:TextContext
{
    public int ArticleID { get; set; }
    public bool IsReady { get; set; }
}

public class NewsArchive:TextContext
{
    public int NewsArchiveID { get; set; }
}

现在,当您初始化新的ArticleNewsArchive时,您会看到基类的字段,方法..