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) ) ;
Console.WriteLine ( "Type(newList) = {0}" , newList.GetType ( ) ) ;
}
private Type GetListType( IEnumerable list)
{
return list.GetType ( ) .GetGenericArguments ( ) [ 0 ] ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB4Q2xhc3MgPSBuZXcgWENsYXNzKCk7CgkJeENsYXNzLkRvKCk7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBYQ2xhc3MKewoJcHVibGljIExpc3Q8c3RyaW5nPiBsaXN0MSA9IG5ldyBMaXN0PHN0cmluZz4oKTsKCQoJcHVibGljIExpc3Q8c3RyaW5nPiBsaXN0MiB7IGdldDsgc2V0OyB9CgkKCXB1YmxpYyB2b2lkIERvKCkKCXsKCQlDb25zb2xlLldyaXRlTGluZSgiVHlwZSA9IHswfSIsIEdldExpc3RUeXBlKGxpc3QxKSk7CgkJCgkJCgkJdmFyIHByb3BlcnR5TGlzdCA9IHRoaXMuR2V0VHlwZSgpLkdldFByb3BlcnR5KCJsaXN0MiIpOyAvLyBpIGdldCBsaXN0IGZyb20gcmVmbGVjdGlvbgoJCQoJCS8vIENyZWF0ZSBpbnN0YW5jZSBvZiBsaXN0MgoJCXZhciBuZXdMaXN0ID0gKElMaXN0KUFjdGl2YXRvci5DcmVhdGVJbnN0YW5jZSgodHlwZW9mKExpc3Q8PikuTWFrZUdlbmVyaWNUeXBlKHByb3BlcnR5TGlzdC5Qcm9wZXJ0eVR5cGUpKSk7IAoJCQoJCUNvbnNvbGUuV3JpdGVMaW5lKCJUeXBlID0gezB9IiwgR2V0TGlzdFR5cGUobmV3TGlzdCkpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCJUeXBlKG5ld0xpc3QpID0gezB9IiwgbmV3TGlzdC5HZXRUeXBlKCkpOwoJfQoJCglwcml2YXRlIFR5cGUgR2V0TGlzdFR5cGUoSUVudW1lcmFibGUgbGlzdCkKICAgIHsKICAgICAgICByZXR1cm4gbGlzdC5HZXRUeXBlKCkuR2V0R2VuZXJpY0FyZ3VtZW50cygpWzBdOwogICAgfQp9