Определите класс с самим собой как универсальную реализацию. Почему/как это работает?

Обычно я создавал события Prism, используемые EventAggregator, например:

public class SomeEvent : CompositePresentationEvent { }

public class SomeEventArgs
{
     public string Name { get; set; }
}

Но, глядя на код коллег, я заметил, что они сделал:

public class SomeEvent : CompositePresentationEvent<SomeEvent>
{
     public string Name { get; set; }
}

Наверное, мой первый вопрос: почему это вообще компилируется? Мне кажется, что он реализует класс, который еще не определен. А во-вторых, это вообще негативно влияет на приложение, незначительно или лучше?

6
задан karl.r 22 May 2012 в 19:46
поделиться