ReSharper предлагает мне сделать параметр типа T контравариантным, изменив это:
interface IBusinessValidator<T> where T: IEntity
{
void Validate(T entity);
}
В это:
interface IBusinessValidator<in T> where T: IEntity
{
void Validate(T entity);
}
Так что же отличается от <T> и <in T>? И какова цель контравариантного здесь?
Скажем, у меня есть IEntity, Entity, User и Account сущности. Предполагая, что как User, так и Account имеют свойство Name, которое необходимо проверить.
Как я могу применить использование контравариантного в этом примере?
