объединить предварительное условие контракта, чтобы вернуть ошибку один раз? - PullRequest
1 голос
/ 29 ноября 2010

Привет там

Мне было интересно, есть ли способ объединить все Contract.Requiere в методе, так что, скажем, что-то подобное происходит

public void MyMehod(Order var1, Cust var2)
{
   Contract.Requires<ArgumentException>(var1 != null);
   Contract.Requires<ArgumentException>(var2 != null);  
   //...
}

И что если я позвоню MyMehtod и оба var1 и var2 будут равны нулю, я получу оба сообщения об ошибке?

(возможно, пример не велик), но идея в том, что если вызвать метод, я хочу знать все, что с ним не так Итак, кто-нибудь знает, возможно ли объединить контракты, чтобы я получил одно сообщение об ошибке?

1 Ответ

1 голос
/ 29 ноября 2010

Один действительно хитрый способ - который не масштабируется до множества аргументов - это сначала заключить контракт, который потерпит неудачу, если оба равны нулю:

Contract.Requires<ArgumentException>(var1 != null || var2 != null);

или

Contract.Requires<ArgumentException>(!(var1 == null && var2 == null));

... но тогда вам все равно понадобятся два отдельных.Я не думаю, что на самом деле рекомендую сделать это, но это единственное, что я могу придумать не по себе.

...