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<string> list1 = new List<string>();
public List<string> 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));
}
private Type GetListType(IEnumerable list)
{
return list.GetType().GetGenericArguments()[0];
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB4Q2xhc3MgPSBuZXcgWENsYXNzKCk7CgkJeENsYXNzLkRvKCk7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBYQ2xhc3MKewoJcHVibGljIExpc3Q8c3RyaW5nPiBsaXN0MSA9IG5ldyBMaXN0PHN0cmluZz4oKTsKCQoJcHVibGljIExpc3Q8c3RyaW5nPiBsaXN0MiB7IGdldDsgc2V0OyB9CgkKCXB1YmxpYyB2b2lkIERvKCkKCXsKCQlDb25zb2xlLldyaXRlTGluZSgiVHlwZSA9IHswfSIsIEdldExpc3RUeXBlKGxpc3QxKSk7CgkJCgkJCgkJdmFyIHByb3BlcnR5TGlzdCA9IHRoaXMuR2V0VHlwZSgpLkdldFByb3BlcnR5KCJsaXN0MiIpOyAvLyBpIGdldCBsaXN0IGZyb20gcmVmbGVjdGlvbgoJCQoJCS8vIENyZWF0ZSBpbnN0YW5jZSBvZiBsaXN0MgoJCXZhciBuZXdMaXN0ID0gKElMaXN0KUFjdGl2YXRvci5DcmVhdGVJbnN0YW5jZSgodHlwZW9mKExpc3Q8PikuTWFrZUdlbmVyaWNUeXBlKHByb3BlcnR5TGlzdC5Qcm9wZXJ0eVR5cGUpKSk7IAoJCQoJCUNvbnNvbGUuV3JpdGVMaW5lKCJUeXBlID0gezB9IiwgR2V0TGlzdFR5cGUobmV3TGlzdCkpOwoJfQoJCglwcml2YXRlIFR5cGUgR2V0TGlzdFR5cGUoSUVudW1lcmFibGUgbGlzdCkKICAgIHsKICAgICAgICByZXR1cm4gbGlzdC5HZXRUeXBlKCkuR2V0R2VuZXJpY0FyZ3VtZW50cygpWzBdOwogICAgfQp9