public void Foo3() { ITypeList<TypeParent> lt = new TypeList<TypeParent>(); lt.Add<TypeParent>(); lt.Add(typeof(TypeChild)); lt.Add(typeof(int)); //lt.Add(new TypeParent { strP = "parent" }); //lt.Add(new TypeChild { strP = "child" }); lt.ToList().ForEach((t) => { Console.WriteLine(t.ToString()); }); }