Curiously Recurring 제네릭 패턴(줄여서 CRGP)는 이미 알려진 패턴 중의 하나 입니다.
CRGP는 제네릭 인터페이스의 구현에 자기 자신의 제네릭 인자로 사용합니다.
interface IExample<TDerived>
{
}
class MyExample : IExample<MyExample>
{
}
.NET 런타임 라이브러리에서 이런 패턴을 사용하는 많은 인터페이스가 있으며,
또다른 대표적인 사용처가 Fluent 인터페이스 입니다.
C#에서는 더 나아가 기본 인터페이스 메서드 및 정적 인터페이스 메서드에서도 활용할 수 있습니다.