Проверьте, является ли тип возвращаемого значения IEnumerable <T> - PullRequest
0 голосов
/ 22 октября 2010

Как я могу проверить, является ли возвращаемый тип функции IEnumerable<T>?Другими словами, я не хочу сопоставлять List<T>, хотя он реализует IEnumerable<T>.Или, другими словами, как я могу определить, было ли выполнение функции отложено?

1 Ответ

2 голосов
/ 22 октября 2010

Я предполагаю, что вы взаимодействуете с MethodInfo?

Type returnType = methodInfo.ReturnType;
bool isEnumerable = returnType.IsGenericType && 
                    returnType.GetGenericTypeDefinition() == typeof(IEnumerable<>);

Конечно, только потому, что он возвращает IEnumerable, не означает, что он использует отложенное выполнение (то есть yield return), и нетреальный способ проверить это без декомпиляции кода.

...