2010-01-28 11 views
7

Je ferais mieux de montrer simplement avec un exemple de code ce que je voudrais accomplir?Contrats de code: Comment puis-je déclarer dans une condition de post-traitement que la valeur d'un champ/propriété n'a pas changé?

class SomeClass 
{ 
    public int SomeProperty; 

    public void SomeOperation() 
    { 
     Contract.Ensures("SomeProperty's value has not changed."); 
        // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
        // How can I write this post-condition? 
    } 
}; 

(La chaîne passée à Contract.Ensures() est bien sûr juste un espace réservé pour l'expression réelle post-condition.)

Comment puis-je faire cela? Est-ce que Contract.OldValue<>() serait utile ici?

Répondre

5

Contract.OldValue devrait être suffisant:

Contract.Ensures(this.SomeProperty == Contract.OldValue(this.SomePropety));