Funziona su ReSharper 9.2.
Nel caso la vostra versione di ReSharper non ha un'annotazione sul Trace.Assert
:
Avresti bisogno il seguente annotation attribute sul metodo Trace.Assert
:
[ContractAnnotation("condition:false=>halt")]
che racconta ReSharper che se il parametro condition
è false
, il metodo non verrà restituito normalmente (halt
).
Bene, questo è quello che avresti inserito nel tuo codice se fossi l'autore del metodo. Ma non puoi semplicemente inserire un attributo su System.dll
.
Tuttavia è possibile utilizzare external annotations. Con questi, dovrete scrivere qualche XML:
<assembly name="System">
<member name="M:System.Diagnostics.Trace.Assert(System.Boolean)">
<attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/>
<attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)">
<argument>condition:false=>halt</argument>
</attribute>
</member>
<member name="M:System.Diagnostics.Trace.Assert(System.Boolean,System.String)">
<attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/>
<attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)">
<argument>condition:false=>halt</argument>
</attribute>
</member>
<member name="M:System.Diagnostics.Trace.Assert(System.Boolean,System.String,System.String)">
<attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/>
<attribute ctor="M:JetBrains.Annotations.ContractAnnotationAttribute.#ctor(System.String)">
<argument>condition:false=>halt</argument>
</attribute>
</member>
</assembly>
Il help page ho collegato spiega come installare questo per ReSharper.
Oppure ... Si potrebbe scrivere un proprio metodo Assert
nella propria classe di supporto, che solo i delegati di Trace.Assert
, in modo da poter utilizzare l'attributo:
[ContractAnnotation("condition:false=>halt")]
public static void Assert(bool condition)
{
Trace.Assert(condition);
}
fonte
2015-08-24 21:16:12
"Debug.Assert lancia" è un'affermazione falsa ... –
@AlexeiLevenkov Naturalmente lancia solo se c'è un problema. Sto parlando di guardie. –
Significa veramente: se DEBUG build * e * tracciati configurati con tutti i valori predefiniti * e * l'istruzione è falsa ... (solo chiarificazione) –