2010-05-14 16 views
17

'dan başlat. Genel bir tür oluşturmam gerekiyor, ancak derleme zamanında türü bilmiyorum. Bunu yapmak istiyorum: t geçerli bir tür olmadığından, bu derleme yapılmayacaktır: . Ama geçerli bir tür hakkında her şeyi biliyor. Böyle bir System.Type gelen genel listesini dinamik olarak oluşturmak için bir yolu var mı? Düşünceye ihtiyacım olabilir ve sorun değil, ben sadece burada biraz kayboldum. Bunun gibiGenel nesneyi System.Type

cevap

24

: Yalnızca tip object bir değişkene atayabilirsiniz

Type t; 
Type genericListType = typeof(List<>).MakeGenericType(t); 
object list = Activator.CreateInstance(genericListType); 

Not. (Her ne kadar jenerik olmayan IList arabirimine gönderilebilirsiniz)

değişkenini kullanmak için, muhtemelen yansımaya ihtiyacınız olacaktır.

+1

+1 Bilmiyordum Listesi <> 'yasaldı. oldukça havalı. –

+1

@Igot: Sadece 'typeof' içinde. – SLaks

+0

Bu harika çalışıyor, ancak sonrasında kullanmak için bir acı. Ancak işi biter. – captncraig

İlgili konular