如何合并两个类

本文关键字:两个 合并 何合并 | 更新日期: 2023-09-27 18:33:45

在我的项目中,我有两个类:文章和新闻。其中的某些字段是相同的。例如:标题、文本、关键字、成员 ID、日期。

我创建了一个接口并将相同的字段放入其中。正确吗?

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; }
}

如何合并两个类

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

关系,假设您不想在类之间共享任何实现细节。例如,如果要向 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
{
   ...
}

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

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

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时,您会看到基类的字段,方法..。