Czy jest możliwe znać typ elementu w czasie kompilacji bez klasy implementującej IEnumerable <T>?
streszczenie
Ignoruj przypadek, w którym obiekt nie może być reprezentowany jako tablica, czy można zdefiniować metodę rozszerzenia (statyczną), taką jak:
public static ? ToArray<TSource>(this TSource source);
i zwraca tablicę obiektu, jeśli składa się z dowolnej sekwencji elementów? A jeśli tak, to co?
być?
wyjaśnienie
Myślałem o następujących deklaracjach:
public static TElement[] ToArray<TElement>(this IEnumerable<TElement> source);
public static ? ToArray<TSource>(this IEnumerable source);
Ale nie mogę założyć, że klasa nieznana musiała zostać zaimplementowanaIEnumerable<T>
lubIEnumerable
. Nie mogę nawet zdefiniować?
w tym przypadku jest po prostuIEnumerable
który jest poza ogólną definicją.
Myślałem też oArray
klasa:
public static Array ToArray<TSource>(this TSource source);
Ale to oznacza, że typ elementu był nieznany w czasie kompilacji.
Zastanawiam się, czy możliwe jest poznanie typu elementu w czasie kompilacji bez implementacji klasyIEnumerable<T>
?