У меня есть абстрактный класс EntityBase, от которого обычно наследуются все мои сущности. Он принимает универсальный тип, который указывает тип свойства Id (например, int или Guid). EntityBase также содержит некоторую логику для определения равенства между сущностями.
public abstract class EntityBase<T>
{
public T Id { get; private set; }
...
}
В моем веб-приложении .Net Core 2.2 я использую Asp.Net Identity и у меня есть объект с именем ApplicationUser, который должен наследоваться от Microsoft. AspNetCore.Identity.IdentityUser. Поскольку невозможно наследовать от нескольких базовых классов, я не могу наследовать от EntityBase.
Итак, я создал интерфейс с именем IEntity, который и EntityBase, и ApplicationUser реализуют
public interface IEntity<T>
{
T Id { get; }
}
У меня естьинтерфейс IRepository с универсальным типом, который должен быть сущностью. Мне все равно, какой тип идентификатора на этой сущности. Я просто хочу сказать, что TEntity просто должен быть IEntity, и мне все равно, IEntity это или IEntity. Что-то вроде ниже. Это возможно?
public interface IRepository<TEntity> where TEntity : IEntity
{
}