我可以在代碼合同構造中使用System.Reflection類和方法,它可以在靜態分析期間檢查嗎? 我想定義的合同那樣:在代碼合同中使用System.Reflection靜態分析
[ContractInvariantMethod]
private void ObjectInvariant()
{
Contract.Invariant(GetType().GetMethods().Any(x => x.Name == "Add"),"Error");
}
當我運行的應用程序,來檢查這個條件。 但在編譯過程中未檢查。 我可以以某種方式啓用這種合同的靜態檢查嗎?
Thanks.Can我可以這樣定義一條規則:「如果MyClass派生自SomeBaseClass,它應該包含使用FxCop的MyClass類型的Field1 Field」。 – mao
這可能與FXCop,但它可能是矯枉過正的問題中的例子。如果你想要求一個方法或屬性存在,就像Steven在他的回答中所說的那樣使用一個接口。如果您想確保方法不存在,就像在您的問題中一樣,使用反射的自動單元測試是最簡單的解決方案。 – akton
我100%同意。代碼分析檢查二進制代碼。這不是類實例的契約,而是類的實現的二元(代碼分析)*規則*。 –