Działa to w przypadku ReSharper 9.2.
W przypadku, gdy wersja ReSharper nie ma adnotacji o Trace.Assert
:
należałoby następujące annotation attribute na metodzie Trace.Assert
:
[ContractAnnotation("condition:false=>halt")]
który mówi, że jeśli ReSharper parametru condition
to jest false
, metoda nie powróci normalnie (halt
).
Cóż, to jest to, co chcesz umieścić w swoim własnym kodzie, jeśli jesteś autorem metody. Ale nie możesz po prostu wstawić atrybutu do System.dll
.
Można jednak użyć external annotations. Z nich, będziesz musiał napisać 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>
help page I związana wyjaśnia, jak zainstalować to ReSharper.
Albo ... Możesz napisać własną metodę Assert
w swojej własnej klasy pomocnika, który tylko delegatów Trace.Assert
, więc można użyć atrybutu:
[ContractAnnotation("condition:false=>halt")]
public static void Assert(bool condition)
{
Trace.Assert(condition);
}
"Debug.Assert wrzuci" to nieprawdziwe oświadczenie ... –
@AlexeiLevenkov Oczywiście, że tylko zgłasza, jeśli wystąpił problem. Mówię o strażnikach. –
Naprawdę masz na myśli: jeśli jest to DEBUG kompilacja * i * śledzenie skonfigurowane z domyślnymi ustawieniami * i * instrukcja jest nieprawdziwa ... (tylko wyjaśnienie) –