Điều này hoạt động trên ReSharper 9.2.
Trong trường hợp các phiên bản của ReSharper không có chú thích trên Trace.Assert
:
Bạn sẽ cần annotation attribute sau trên Trace.Assert
phương pháp:
[ContractAnnotation("condition:false=>halt")]
Mà nói ReSharper rằng nếu tham số condition
là false
, phương pháp sẽ không trả lại bình thường (halt
).
Vâng, đây là những gì bạn muốn đặt trong mã của riêng bạn nếu bạn là tác giả của phương pháp. Nhưng bạn không thể chỉ cần chèn thuộc tính vào System.dll
.
Bạn có thể sử dụng external annotations. Với những, bạn sẽ phải viết một số 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>
Các help page tôi liên kết với giải thích làm thế nào để cài đặt này để ReSharper.
Hoặc ... Bạn có thể viết phương pháp Assert
của riêng bạn trong lớp helper của riêng bạn, mà chỉ có các đại biểu đến Trace.Assert
, vì vậy bạn có thể sử dụng thuộc tính:
[ContractAnnotation("condition:false=>halt")]
public static void Assert(bool condition)
{
Trace.Assert(condition);
}
Nguồn
2015-08-24 21:16:12
"Debug.Assert sẽ ném" là tuyên bố sai ... –
@AlexeiLevenkov Tất nhiên nó chỉ ném nếu có vấn đề. Tôi đang nói về bảo vệ. –
Bạn thực sự có nghĩa là: nếu nó được xây dựng DEBUG * và * truy tìm cấu hình với tất cả mặc định * và * tuyên bố là sai ... (chỉ làm rõ) –