2010-11-29 3 views
1

HI ilcombiner les contrats préconditionner pour retourner l'erreur une fois?

Je me demandais s'il y a de toute façon de combiner tous Contract.Requiere dans une méthode, dire quelque chose comme cela se produit

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

Et que si je l'appelle MyMehtod et les deux var1 et var2 sont null Je reçois les deux messages d'erreur? (Peut-être l'exemple n'est pas génial) mais l'idée est que si j'appelle la méthode, je veux savoir tout ce qui ne va pas avec ça Alors, est-ce que quelqu'un sait s'il est possible de combiner les Contrats pour avoir une erreur message de retour?

Répondre

1

Une façon vraiment crufty - qui n'échelle pas beaucoup d'arguments - est d'abord un contrat qui échouera si deux sont nuls:

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

ou

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

... mais alors vous auriez toujours besoin des deux individus. Je ne pense pas que je recommanderais vraiment faire cela, mais c'est la seule chose que je peux penser de façon désinvolte.

+0

Merci Jon, réponse très rapide :). Ce serait une fonctionnalité pratique – roundcrisis

Questions connexes