如何检查函数的返回类型是否为IEnumerable<T>
?换句话说,我不想匹配List<T>
,即使它实现了IEnumerable<T>
。或者换句话说,如何检测函数是否延迟执行?
答案 0 :(得分:2)
我假设您正在与MethodInfo
进行互动?
Type returnType = methodInfo.ReturnType;
bool isEnumerable = returnType.IsGenericType &&
returnType.GetGenericTypeDefinition() == typeof(IEnumerable<>);
当然,仅仅因为它返回IEnumerable
并不意味着它使用延迟执行(即yield return
)并且没有真正的方法来检查它而不反编译代码。