0

関数の戻り型がであるかどうかを確認するにはどうすればよいIEnumerable<T>ですか?List<T>つまり、を実装していても、一致させたくありませんIEnumerable<T>。言い換えれば、関数が実行を延期したかどうかをどのように検出できますか?

4

1 に答える 1

3

私はあなたがと対話していると思いますMethodInfoか?

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

もちろん、それが返されるからといって、IEnumerableそれが遅延実行(すなわち)を使用することを意味するわけではyield returnなく、コードを逆コンパイルせずにそれをチェックする実際の方法はありません。

于 2010-10-22T19:51:11.150 に答える