2016-12-03 258 views
0

我有一个项目,我用Coefirst。 在我的项目中,我想实现SoftDelete有两种方法。抽象类或SoftDelete接口

1:用户接口一样belowe:

public interface ISoftDelete 
{ 
    bool IsDeleted { get; set; } 
} 

如果我用这种方式,我要实现我想要softDelete所有类。

第二:使用抽象类像belowe:

public abstract class SoftDelete 
{ 
    public bool IsDelelted { get; set; } 
} 

我不知道哪一个更好,有在网络上没有类似的问题。

+0

的可能的复制[接口或抽象类?(http://stackoverflow.com/questions/1165332/interface-or-abstract-class ) –

回答

0

接口是一个数据传递契约,你没有任何实现,但抽象类可以有默认的实现。 如果你想在你的基类(这里是SoftDelete)中实现,你必须使用抽象类。

0
  1. 保持它很好很简单,你不需要任何特殊的处理IsDeleted对象。

  2. 您将需要处理数据库中的继承,这意味着实际上每种类型继承的表。对于这种方法,我建议不要这样做,因为这会使查询和迁移变得复杂,并可能导致性能问题。

所以我会说1更好,即使它需要代码中的重复,它可能会为你节省一些数据库中的麻烦。

0

根据MSDN

如果要创建的功能将在很宽的范围内不同的物体是有用的,使用的接口。抽象类应主要用于密切相关的对象,而接口最适合为无关类提供通用功能。

我想接口是更好的选择

Recommendations for Abstract Classes vs. Interfaces