Design By Contract

C#で契約による設計はSystem.DiagnosticsネームスペースのDebug.Assertメソッドを使用して行うようだ.


例えば事前条件と事後条件のチェックは以下のように行う.

  using System.Diagnostics

  public class Foo
  {
    public void Bar(object baz)
    {
      //事前条件
      Debug.Assert(baz != null);

      //処理
      //・・・

      //事後条件
      Debug.Assert("処理の結果・・・");
    }
  }


不変条件のチェックはInvariantメソッドを定義して,適宜クラス内で自分で呼び出すことになるようだ.
さすがに不変条件のチェックは自動ではやってくれんか.