2010-09-15 7 views
2

J'utilise Resharper 5.x pour faire une analyse à la compilation et c'est généralement très bien à ce sujet, mais il ne semble pas appliquer de contrats de code à sa logique. J'ai quelque chose comme le suivant, mais je reçois un problème sur la ligne marquée.Resharper et les contrats de code ne jouent pas bien ensemble

public void Method(int arg) 
{ 
    Contract.Requires(this.NullableValueType != null); 

    this.Method2(
     arg, 
     this.NullableValueType.Value, // [1] 
     this.ReferenceType); 
} 

[1] finit par être mis en surbrillance par "Possible 'System.InvalidOperationException'". Y at-il un moyen de se débarrasser de cette erreur sans désactiver le chèque?

+1

Dupliquer la question, voir: http://stackoverflow.com/questions/929859/resharper-possible-null-assignment-when-using-microsoft-contracts - vous devez informer Resharper des méthodes de validation des contrats de code. – porges

Répondre

0

Tout en reconnaissant que Resharper pourrait être plus intelligent et prendre en compte les contrats, malheureusement ce n'est pas le cas actuellement.

Je recommanderais de rendre la ligne plus explicite. Au lieu de

this.NullableValueType.Value 

vous pouvez écrire

this.NullableValueType ?? <something> 

où le « quelque chose » est, bien sûr, quelque chose qui n'a pas d'importance parce qu'il ne se reproduise jamais (par exemple, new ThatValueType()).

Questions connexes