Почему существует собственный родовой тип?

Я проверяю код, написанный некоторыми бывшими сотрудниками, и нашел это

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, который наследуется от самого себя? Если я уберу это общее ограничение, то ничего не изменится, поэтому мне было интересно, почему он вообще существует? Есть ли какая-то польза от определения общего ограничения, о котором я не знаю?

0 ответов

Другие вопросы по тегам