Почему существует собственный родовой тип?
Я проверяю код, написанный некоторыми бывшими сотрудниками, и нашел это
public abstract class BaseClass<T, M>
where T : BaseClass<T, M>, M
where M : IDisposable
{
protected M PropertyName {get; private set}
...
// T is never used in this class. Only M is used
}
Унаследованные классы определяются так
public class InheritedClass : BaseClass<InhertiedClass, IFooInterface>, IFooInterface
{
...
}
IFooInterface : IDisposable {...}
Мой вопрос: почему базовый класс определяет универсальный тип T, который наследуется от самого себя? Если я уберу это общее ограничение, то ничего не изменится, поэтому мне было интересно, почему он вообще существует? Есть ли какая-то польза от определения общего ограничения, о котором я не знаю?