public static void Main()
Console.WriteLine("Hello World");
public interface IFoo { }
public class RedFoo : IFoo { }
public class BlueFoo : IFoo { }
public interface IBar { }
public class CleanBar : IBar { }
public class DirtyBar : IBar { }
public abstract class Animal<TFoo, TBar>
public class Cat : Animal<RedFoo, CleanBar> { }
public class AbstractAnimalValidator<TAnimal> : AbstractValidator<TAnimal>
where TAnimal: Animal<IFoo, IBar>, new()
public class CatValidator : AbstractAnimalValidator<Cat>{ }