实体应该实现接口吗?

Nei*_*ell 6 c# class-design

我个人没有我的实体实现接口.对于一个Task类,我不会ITask只是在其上定义了相同的属性.

我已经看过它做了几次,所以我想知道这个建议来自哪里,以及你从中获得了什么好处.

如果你正在使用ORM,那么说"我可以改变我的数据访问"的论点是无关紧要的,那么还有什么其他原因呢?

更新:
在评论中提出了一个很好的观点INotifyPropertyChanged.这不是我的观点 - 我说的是这样的事情:

public interface ITask
{
    int Id { get; set; }
    string Description { get; set; }
}

public class Task : ITask
{
    public int Id { get; set; }
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*mlk 3

我曾经走过这条路(值对象的接口)。这是一种巨大的后背疼痛,我建议不要这样做。其常见的论据是:

嘲笑: 它们是值对象。没什么可嘲笑的。另外,与编写构建器(用 Java)或使用 C# 中的命名参数相比,模拟最终会带来很大的痛苦。

只读视图: 我必须承认我仍然更喜欢默认情况下使某些内容不可变,只有在绝对需要时才使其可变。

隐藏功能: 一般来说,范围已经涵盖了我的这一功能。