using System.ComponentModel;
public abstract class BaseClass<T> : IBase
Console.WriteLine("Validating");
public class SubClassA : BaseClass<EventArgs>
public class SubClassB : BaseClass<CancelEventArgs>
public static void Main()
var tests = new IBase[] { new SubClassA(), new SubClassB() };