Ich schreibe eine Methode, die einige Parameter überprüfen muss und wenn sie validiert sind, ein IEnumerable zurückgeben. Z.B.Benannte Iterator & Exceptions
public static IEnumerable<double> GetEnum(int param)
{
if (!IsValidParameter(param))
{
throw new Exception();
}
while(true)
{
yield return 5.0;
}
}
Ich glaube jedoch, wegen lazy evaluation, wenn ich mit schlechten Parameter meiner Unit-Tests laufen, aber eine der IEnumerable Methoden noch nicht aufrufen, wird die Ausnahme nicht geworfen.
[Test]
[ExpectedException(typeof(Exception))]
void Test()
{
var ie = GetEnum(bad_param);
}
Ich kann Dinge beheben, indem Sie die IEnumerable in einer anderen Funktion Aufbau (sagen Foo), dann Parameter überprüfen in GetEnum und rufen Foo aber gibt es eine Lösung, ohne dass mehrere Funktionen erstellen zu müssen?
Cheers, Jurgen
Ich fragte mich, ob der Compiler schlau genug war, um beide Methoden auf einen einzelnen Iteratorblock zu reduzieren. Danke für den Tipp, Marc. –