我应该为抽象类创建一个接口吗?

时间:2016-03-21 14:23:28

标签: c# entity-framework code-first

是否有任何实际的理由为抽象类创建接口?我遇到过这样的事情:

public interface IEntity<T> 
{
    T Id { get; set; }
}

public abstract class BaseEntity { 
}

public abstract class Entity<T> : BaseEntity, IEntity<T> 
{
    public virtual T Id { get; set; }
}

我真的不明白它和这段代码有什么区别,因为IEntity不是我不止一次使用的东西:

public abstract class BaseEntity { 
}

public abstract class Entity<T> : BaseEntity
{
    public virtual T Id { get; set; }
}

谢谢!

2 个答案:

答案 0 :(得分:0)

由于BaseEntity类确实添加了方法的任何属性,是的,它与接口完全不同。该接口定义了Id类型的属性T,该接口(契约)可以在您的应用程序的其他位置使用。

现在的基类是没用的恕我直言。

为您实现接口的基类是可用的,如下所示:

public interface IEntity<T> {
    T Id { get; set; }
}

public abstract class BaseEntity<T>: IEntity<T> { 
    public virtual T Id { get; set; }
}

public abstract class Entity<T> : BaseEntity<T> {
    // No need to implement the Id property, we already have it inherited
}

答案 1 :(得分:0)

以下是我想知道的正确答案:c# Abstract Class implementing an Interface

感谢大家的帮助。