25 Mayıs 2009, PAZARTESİ
IEnumerable< type T;T>
bir şekilde yansıması ile IEnumerable<T> 3 ** tür almak için var mı?
örneğin
* *5 değişken bir bilgi var; yansıma yoluyla Çocuğun türü almak istiyorum
CEVAP
25 Mayıs 2009, PAZARTESİ
IEnumerable<T> myEnumerable;
Type type = myEnumerable.GetType().GetGenericArguments()[0];
Böylelikle
IEnumerable<string> strings = new List<string>();
Console.WriteLine(strings.GetType().GetGenericArguments()[0]);
baskılar System.String.
Type.GetGenericArguments MSDN bkz.
Düzenleme:Bu yorum endişeleri gidermek inanıyorum:
// returns an enumeration of T where o : IEnumerable<T>
public IEnumerable<Type> GetGenericIEnumerables(object o) {
return o.GetType()
.GetInterfaces()
.Where(t => t.IsGenericType == true
&& t.GetGenericTypeDefinition() == typeof(IEnumerable<>))
.Select(t => t.GetGenericArguments()[0]);
}
Bazı nesneler bir numaralandırma dönüş için gerekli bu yüzden Birden fazla IEnumerable genel uygular.
Düzenleme:, Söylemek zorunda olsa da, bir sınıf 13* *bir daha IEnumerable<T> uygulamak için korkunç bir fikir.
Bunu PaylaÅŸ:

Bu ViewData öğe anahtarı 'ANAHTAR...
Nasıl olursa IEnumerable null veya boş...
Stil input type=&; dosya" düğme"...
Listesi için IEnumerable dönüştürme...
Ne'In IQueryable ve IEnumerable a...