检查返回类型是否为IEnumerable <t> </t>

时间:2010-10-22 19:47:51

标签: .net ienumerable deferred-execution

如何检查函数的返回类型是否为IEnumerable<T>?换句话说,我不想匹配List<T>,即使它实现了IEnumerable<T>。或者换句话说,如何检测函数是否延迟执行?

1 个答案:

答案 0 :(得分:2)

我假设您正在与MethodInfo进行互动?

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

当然,仅仅因为它返回IEnumerable并不意味着它使用延迟执行(即yield return)并且没有真正的方法来检查它而不反编译代码。