code-contracts

    3熱度

    1回答

    我有靜態類,它包含具有相同簽名的方法。 static class SomeClass { static void SomeMethod(int param) { Contract.Requires<ArgumentException>(param != 0); // some code } static void SomeMeth

    3熱度

    2回答

    我試圖實現方法的後置條件。我想保證它不會改變內部狀態的某個特定部分(我修正了一個bug,因爲它曾經這樣做過,爲了達到目的,我在代碼中添加了後置條件)。我最好的嘗試是如下: Contract.Ensures(PropertyA.Collection.Count == Contract.OldValue(PropertyA.Collection).Count); Contract.Ensures(C

    0熱度

    1回答

    首先,我愛代碼契約,但我有點困惑與一個念頭: 我班MyClass使用的依賴被分配爲合同類的接口IDependency(internal abstract class IDependencyContracts)聲明,我的班級在很大程度上依賴於這些合同。我沒有保證合同是強制執行由客戶端代碼提供的接口的自定義實現。 據我瞭解,我可以強制執行僅在我的程序集中的類的合同,但我沒有控制客戶端代碼程序集。 那麼

    1熱度

    1回答

    考慮到你需要調用一個不能在Contract.Requires中修改的庫的方法(例如,方法Regex.Matches),有一種方法可以指示這種方法是純粹的嗎? Contract.Requires<ArgumentException>(Regex.Matches(password, "\d").Count > 1) 警告:檢測到調用方法 'System.Text.RegularExpression

    9熱度

    2回答

    我正在用C#編寫ReSharper 8.0和VS2012 for .Net 4.0。 ReSharper包含屬性:JetBrains.Annotations.PureAttribute。這用於提供檢查「不使用純方法的返回值」。 代碼合同包括一個屬性:System.Diagnostics.Contracts.PureAttribute。代碼合同檢查使用它來確保調用不會產生可見狀態更改,因此不需要重新

    4熱度

    1回答

    我試圖在VB.NET項目中設置Code Contracts。 這裏是一個真正簡單的方法是應確保在除數參數傳遞不爲零: Public Function Divide(ByVal numerator As Integer, ByVal divisor As Integer) As Double Contract.Requires(Of ArgumentOutOfRangeException)

    2熱度

    1回答

    我正在嘗試將Code Contracts集成到一些現有的代碼中,並且在大部分情況下非常好。我現在面臨不過問題是,我已經成立了一個接口和一個實現實現委託給一個函數功能<>傳遞到類的類似於下面的構造合同: [ContractClass(typeof(IFooContract))] public interface IFoo { object Bar(); } [ContractCl

    3熱度

    2回答

    這可能是風格大多是一個問題,但定義代碼合同非空接口的成員時,它的做法是最好的: 接口: [ContractClass(typeof(IFooContract))] public interface IFoo { object Bar(); } 合同選項1: [ContractClassFor(typeof(IFoo))] public abstract class IFooC

    1熱度

    1回答

    我想知道如果我能夠使用微軟代碼合同來驗證方法不會拋出任何異常的不變。用例是如下: 我有進口商具有連接到其上的記錄器,其中,進口商使用基類進口商限定進口的不同階段: 閱讀的文件; 將數據存儲到通用數據記錄; 從記錄創建域對象; 驗證項目上下文中的域對象; 將有效的域對象放入項目中。 每個階段都由該導入器基類的抽象方法表示。我想確保每個階段都不變,不會引發任何記錄的異常。 Ergo,「讀取文件」階段應

    4熱度

    1回答

    這是接口合同類的一部分。 [Pure] public bool IsDirty() { throw new NotImplementedException(); } public void Save() { Contract.Ensures(!this.IsDirty()); //WARNING throw new NotImplementedExceptio