Кодовые контракты в моно
Следующий код:
Contract.Requires<ArgumentException>(command != null, Resources.Messages.CommandNotSpecified);
звонки
Contract.AssertMustUseRewriter (ContractFailureKind kind, System.String message)
что, по-видимому, вызвано тем, что Code Contracts не настроен на использование проверки контрактов во время выполнения, если вы использовали 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
2 ответа
Он не реализован, поэтому единственное, что может сделать эту работу, - это написать реализацию. Mono - это проект с открытым исходным кодом, всегда рад принять новый вклад.
Для вашей информации, Microsoft CodeContracts теперь является OpenSource: