Bu ReSharper 9.2 üzerinde çalışır.
Sen Trace.Assert
yöntemine aşağıdaki annotation attribute gerekir:: ReSharper sürümünüz Trace.Assert
ek açıklama bulunmamaktadır durumda
ReSharper söyler
[ContractAnnotation("condition:false=>halt")]
olduğunu condition
parametre ise false
, yöntem normal olarak geri dönmeyecek (halt
).
Eğer yöntemin yazarı olsaydınız, kendi kodunuza koyacağınız şey budur. Ancak, System.dll
'a bir özellik ekleyemezsiniz.
external annotations'u kullanabilirsiniz. Bunlarla bazı XML yazmak gerekecek:
<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>
Ben bağlantılı help page ReSharper bu nasıl kurulduğunu açıklar.
Ya da ... Kendi yardımcı sınıf, sadece delegeler Trace.Assert
için kendi Assert
yöntem yazabilirsiniz, böylece özelliğini kullanabilirsiniz: Sadece ReSharper 9.1.3 bu test
[ContractAnnotation("condition:false=>halt")]
public static void Assert(bool condition)
{
Trace.Assert(condition);
}
"Debug.Assert atılacak" yanlış bir ifadedir ... –
@AlexeiLevenkov Elbette ki sorun varsa atıyor. Muhafızlardan bahsediyorum. –
Gerçekten kastediyorsunuz: DEBUG yapılıyorsa * ve * tüm varsayılanlar ile yapılandırılmış * ve * ifadesi yanlıştır ... (sadece açıklama) –