簡體   English   中英

是否有resharper comment指令禁用類的代碼清理?

[英]Is there a resharper comment directive to disable code cleanup for a class?

我有一個類,其中FileHelpers依賴於此類文件中的字段順序。 如果類文件有一個代碼清理運行它將導致字段按字母順序排序並且無形地破壞我的類。

既然我想避免意外發生這種情況,是否有一個resharper comment指令來禁用類的代碼清理?

您可以自定義默認成員布局XML文件,並在代碼清理的“重新排序成員”步驟中指定要忽略的模式。

查看Resharper設置下的“ 類型成員布局”部分。 您可以看到已經為COM接口定義了兩個異常,並為StructLayoutAttribute定義了Structs:

 <!--Do not reorder COM interfaces-->
  <Pattern>
    <Match>
      <And Weight="100">
        <Kind Is="interface"/>
        <HasAttribute 
           CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"/>
      </And>
    </Match>
  </Pattern>

<!--Do not reorder when StructLayoutAttribute is set -->
  <Pattern>
    <Match>
      <And Weight="100">
     <Or>
        <Kind Is="struct"/>
        <Kind Is="class"/>
     </Or>
        <HasAttribute 
           CLRName="System.Runtime.InteropServices.StructLayoutAttribute"/>
      </And>
    </Match>
  </Pattern>

您可以輕松地創建自己的IgnoreTypeMemberReorderingAttribute並在XML文件中添加一個小部分來檢查它。

我相信Resharper會觀察[StructLayout(LayoutKind.Sequential)]屬性。

更新:我認為這在編寫本課時適用於類,但在當前版本的Resharper(10)中,它似乎只適用於結構,而不適用於類。 所以它在許多互操作情況下可能仍然有用,但不是保持任何類的順序的一般方法。

應用於您的字段的另一個有用屬性是[FieldOrder(1)] ,因此您明確定義了訂單...我喜歡它作為一個簡單的例子來防止重新排序的字段

不確定這個版本的FileHelpers是什么......我正在使用使用NuGet安裝的v2.9.9.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM