6

次のコード:

Contract.Requires<ArgumentException>(command != null, Resources.Messages.CommandNotSpecified);

通話

Contract.AssertMustUseRewriter (ContractFailureKind kind, System.String message)

これは、Visual Studio を使用している場合、ランタイム コントラクト チェックを使用するようにコード コントラクトを構成していないことが原因のようです。

記事 @ http://devjourney.com/blog/code-contracts-part-2-preconditions/は、実行時チェックを構成せずに生成されたコードが次のようであることを意味します。

public static void Requires<TException>(bool condition)
where TException: Exception
{
    AssertMustUseRewriter(ContractFailureKind.Precondition, "Requires<TException>");
}

コントラクトが期待どおりに機能するように、MonoDevelop で何をすべきか知っている人はいますか?

私が得ている正確な例外は次のとおりです。

2012-11-13 23:33:24.815 StickX[339:c07] mvx: Diagnostic:  34.46 Exception masked NotImplementedException: The requested feature is not implemented.
      at System.Environment.FailFast (System.String message) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/Environment.cs:821 
  at System.Diagnostics.Contracts.Contract.AssertMustUseRewriter (ContractFailureKind kind, System.String message) [0x00011] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Diagnostics.Contracts/Contract.cs:83 
  at System.Diagnostics.Contracts.Contract.Requires[ArgumentException] (Boolean condition, System.String userMessage) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Diagnostics.Contracts/Contract.cs:271 
4

2 に答える 2

4

これは実装されていないため、これを機能させる唯一の方法は、実装を作成することです。Mono はオープン ソース プロジェクトであり、常に新しい貢献を歓迎します。

于 2012-11-14T13:32:45.640 に答える
3

参考までに、Microsoft CodeContracts は OpenSource になりました。

https://github.com/CodeContractsDotNet/CodeContracts

于 2015-01-06T22:17:36.880 に答える