私のプロジェクトの1つで使用するためのPiranha(http://piranhacms.org/)と呼ばれるオープンソースCMSを評価しています。少なくとも私にとっては、次のコードが興味深く、少し混乱していることがわかりました。クラスが同じ型のベースから継承している理由を理解するのに役立つことがありますか?
public abstract class BasePage<T> : Page<T> where T : BasePage<T>
{
/// <summary>
/// Gets/sets the page heading.
/// </summary>
[Region(SortOrder = 0)]
public Regions.PageHeading Heading { get; set; }
}
クラスBasePage<T>
が定義されている場合、なぜ継承するのPage<T> where T: BasePage<T>
ですか?どのような特定の目的に役立ちますか?