在我的项目中,我有两个课程:文章和新闻。其中的一些字段是相同的。例如:标题,文本,关键字,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; }
}
答案 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
中定义的属性必须实际在Article
和NewsArchive
中实现才能编译。这将是有效的,但不会导致代码重用,另一方面,这不是接口的目的。
答案 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; }
}
现在,当您初始化新的Article
或NewsArchive
时,您会看到基类的字段,方法..