abstract class A where T:A { public event Action Event1; } class B : A { //has a field called Action Event1; }
I don't think you need to specify where T:A.
T will be B when you use class B:A
This is also known as CRTP or Curiously recurring template pattern and is a known idiom.