Можно ли узнать тип элемента во время компиляции без класса, реализующего IEnumerable <T>?

резюме

Не обращайте внимания на случай, когда объект не может быть представлен в виде массива, возможно ли определить метод расширения (статический), например:

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

и возвращает массив объекта, если он состоит из какой-либо последовательности элементов? И если да, что бы? быть?

объяснение

Я думал о следующих декларациях:

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

Но я не могу предположить, что неизвестный класс должен быть реализованIEnumerable<T> или жеIEnumerable, Я даже не могу определить? в случае, если это простоIEnumerable который вне общего определения.

И я также думал оArray класс:

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

Но это означает, что тип элемента был неизвестен во время компиляции.

Так что мне интересно, возможно ли узнать тип элемента во время компиляции без реализации классаIEnumerable<T>?

Ответы на вопрос(3)

Ваш ответ на вопрос