通用实体基类

我刚刚阅读了有关通用实体基类的文章。简单地说,如果我没记错的话,后面的主要思想是在一个接口中收集所有通用的,非实体专用的字段,而不是在主要实体中实现它。这将是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


缥缈止盈
浏览 153回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP