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>?

questionAnswers(3)

yourAnswerToTheQuestion