Почему у нас есть два разных свойства Id в интерфейсах IEntity и IEntity ?
IEntity происходит от IEntity, но позволяет вам передавать определенный тип, которым вы хотите, чтобы ваше свойство Id было. Определение базового интерфейса IEntity имеет свойство Id, определенное как объект, который не является безопасным типом и, если он используется в Entity Framework, не будет преобразован в дружественный к базе данных тип данных.
Что там делает новое ключевое слово? В чем дело? : O
Новое ключевое слово определения свойства облегчает чтение и понимание кода. Поскольку IEntity имеет свойство с именем Id, которое скрывает базовую реализацию IEntity.Id. Ключевое слово «new» облегчает понимание того, что IEntity .Id скрывает базовую реализацию IEntity.Id
.
Чуть дальше
В ваших производных классах базового абстрактного класса Entity вы предоставляете тип свойства ID следующим образом:
public class DerivedEntity : Entity<int>
{
public string AnotherProperty { get; set; }
}
Это сообщает компилятору, что свойство Id имеет тип "int" через параметр типа "T" в Entity , что упрощает использование и понимание того, каким должно быть свойство Id в ваших производных классах.