我个人没有我的实体实现接口.对于一个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)
我曾经走过这条路(值对象的接口)。这是一种巨大的后背疼痛,我建议不要这样做。其常见的论据是:
嘲笑: 它们是值对象。没什么可嘲笑的。另外,与编写构建器(用 Java)或使用 C# 中的命名参数相比,模拟最终会带来很大的痛苦。
只读视图: 我必须承认我仍然更喜欢默认情况下使某些内容不可变,只有在绝对需要时才使其可变。
隐藏功能: 一般来说,范围已经涵盖了我的这一功能。