SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • thenewboston

    thenewboston

    4 ŞUBAT 2008
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009