我刚刚阅读了有关通用实体基类的文章。简单地说,如果我没记错的话,后面的主要思想是在一个接口中收集所有通用的,非实体专用的字段,而不是在主要实体中实现它。这将是TL:DR;让我们看一些代码。这是基础实体接口,是对另一个接口的通用实现public interface IEntity : IModifiableEntity{ object Id { get; set; } DateTime CreatedDate { get; set; } DateTime? ModifiedDate { get; set; } string CreatedBy { get; set; } string ModifiedBy { get; set; } byte[] Version { get; set; }}public interface IEntity<T> : IEntity{ new T Id { get; set; }}这是它在抽象类中的实现public abstract class Entity<T> : IEntity<T>{ [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public T Id { get; set; } object IEntity.Id { get { return this.Id; } } public string Name { get; set; } private DateTime? createdDate; [DataType(DataType.DateTime)] public DateTime CreatedDate { get { return createdDate ?? DateTime.UtcNow; } set { createdDate = value; } } [DataType(DataType.DateTime)] public DateTime? ModifiedDate { get; set; } public string CreatedBy { get; set; } public string ModifiedBy { get; set; } [Timestamp] public byte[] Version { get; set; }}似乎很清楚也很容易理解,但是关于Id的一点。 我的问题是(是的,最后)为什么在IEntity和IEntity接口中都有两个不同的Id属性?什么是新的关键字做什么呢?这是怎么回事?:O
1 回答
- 1 回答
- 0 关注
- 152 浏览
添加回答
举报
0/150
提交
取消