いくつかのパラメータをチェックする必要があり、検証された場合にIEnumerableを返すメソッドを記述しています。例えば。名前付きイテレータと例外
public static IEnumerable<double> GetEnum(int param)
{
if (!IsValidParameter(param))
{
throw new Exception();
}
while(true)
{
yield return 5.0;
}
}
は、しかし、私が悪いのパラメータを持つ私のユニットテストを実行したとき、私は、理由は遅延評価の信じているが、まだIEnumerableをのいずれかの方法を呼び出すことはありませんが、例外がスローされていません。
[Test]
[ExpectedException(typeof(Exception))]
void Test()
{
var ie = GetEnum(bad_param);
}
私はGetEnumのパラメータをチェックし、Fooのを呼び出し、その後、(Fooのことを言う)別の関数でのIEnumerableを構築することにより、物事を修正することができますが、複数の関数を作成することなく、解決策はありますか?
乾杯、ユルゲン
コンパイラが両方のメソッドを1つのイテレータブロックに減らすのに十分にスマートであるかどうかは、実際には分かりました。先端のおかげで、マーク。 –