私は最近 .NET Contracts API を発見しました。拡張構文ではなくメソッドを使用した実装方法は好きではありませんが (私の意見では、 Sing#は適切でした)、古い/通常の方法よりもそれらを使用する方が好きです。 null チェックなどに if を使用します。
また、最初の Contract.Ensures-calls に近づいていて、実行中に例外が発生した Contract.Ensures を含むメソッドで例外をどのように処理するかという質問に出くわしました。
契約という言葉。メソッド内で例外を処理し、クラスを正しい状態に戻す必要があるように感じますが、それができない場合はどうすればよいでしょうか?
ここにこのクラスがあるとしましょう:
public class PluginManager
{
private ILoadedFromAtCompileTimeUnknownAssembly extension;
public bool IsFinished { get; private set; }
public void Finish()
{
extension.Finish();
this.IsFinished = true;
}
}
メソッドの完了後に IsFinished が true であることを確認するために Contract.Ensures を使用できますか?