Ist es möglich, den Elementtyp zur Kompilierungszeit zu kennen, ohne dass eine Klasse IEnumerable <T> implementiert?

Zusammenfassung

Wenn Sie den Fall ignorieren, dass ein Objekt nicht als Array dargestellt werden kann, können Sie eine (statische) Erweiterungsmethode wie die folgende definieren:

public static ? ToArray<TSource>(this TSource source); 

und gibt das Array eines Objekts zurück, wenn es aus einer beliebigen Folge von Elementen besteht? Und wenn ja, was würde das?? Sein?

Erläuterung

Ich habe über folgende Deklarationen nachgedacht:

public static TElement[] ToArray<TElement>(this IEnumerable<TElement> source); 
public static ? ToArray<TSource>(this IEnumerable source); 

Ich kann aber nicht davon ausgehen, dass eine unbekannte Klasse implementiert sein mussIEnumerable<T> oderIEnumerable. Ich kann das nicht mal definieren? In dem Fall ist es einfachIEnumerable das ist aus der generischen Definition.

Und ich habe auch über das nachgedachtArray Klasse:

public static Array ToArray<TSource>(this TSource source); 

Dies bedeutet jedoch, dass der Elementtyp zum Zeitpunkt der Kompilierung unbekannt war.

Daher frage ich mich, ob es möglich ist, den Elementtyp zur Kompilierungszeit zu kennen, ohne dass eine Klasse implementiert wirdIEnumerable<T>?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage