using System.Collections.Generic;
public interface IEntityModelBuilder<out T> where T : IEntity { }
public interface IEntity { }
public class Entity1 : IEntity { }
public class Entity2 : IEntity { }
public class BaseClass1 : IEntityModelBuilder<Entity1>
public class BaseClass2 : IEntityModelBuilder<Entity2>
public BaseClass2(int a) { }
public static void Main(string[] args)
List<IEntityModelBuilder<IEntity>> objects = Assembly.GetExecutingAssembly().GetTypes()
.Where(x => x.GetInterfaces().Any(y => y.IsGenericType && y.Name == "IEntityModelBuilder`1"))
.Select(x => (IEntityModelBuilder<IEntity>)Activator.CreateInstance(x, new object[] { 0 })).ToList();
objects.ForEach(x => Console.WriteLine(x.GetType().Name));