using System.Collections.Generic;
public class GenericObject<T>
public static void Main()
var types = Assembly.GetExecutingAssembly()
.Where(t => t.Namespace == "Something")
var concreteTypes = types.Where(t => !t.IsGenericType);
var genericTypes = types.Where(t => t.IsGenericType);
foreach (var concrete in concreteTypes)
var instance = Activator.CreateInstance(concrete);
Console.WriteLine(instance);
foreach (var generic in genericTypes)
foreach(var concrete in concreteTypes)
var specific = generic.MakeGenericType(concrete);
var instance = Activator.CreateInstance(specific);
Console.WriteLine(instance);