using System; using System.Collections; using System.Collections.Generic; public class Test { public static void Main() { var xClass = new XClass(); xClass.Do(); } } public class XClass { public List list1 = new List(); public List list2 { get; set; } public void Do() { Console.WriteLine("Type = {0}", GetListType(list1)); var propertyList = this.GetType().GetProperty("list2"); // i get list from reflection // Create instance of list2 var newList = (IList)Activator.CreateInstance((typeof(List<>).MakeGenericType(propertyList.PropertyType))); Console.WriteLine("Type = {0}", GetListType(newList)); Console.WriteLine("Type(newList) = {0}", newList.GetType()); } private Type GetListType(IEnumerable list) { return list.GetType().GetGenericArguments()[0]; } }