代码之家  ›  专栏  ›  技术社区  ›  Chris Marisic

是否有resharper comment指令来禁用类的代码清理?

  •  14
  • Chris Marisic  · 技术社区  · 16 年前

    我有一个类,其中filehelpers依赖于这个类文件中的字段顺序。如果类文件得到了一个代码清理运行,它将导致字段按字母顺序排序,无形中破坏了我的类。

    由于我希望避免这种意外发生,是否有resharper comment指令来禁用类的代码清理?

    3 回复  |  直到 10 年前
        1
  •  12
  •   SteveC    14 年前

    可以自定义默认的成员布局XML文件,并在代码清理的“重新排序成员”步骤中指定要忽略的模式。

    看看 类型成员布局 在Resharper设置下的部分。可以看到,已经为COM接口和结构定义了两个异常, StructLayoutAttribute :

     <!--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文件中添加一个小部分来检查它。

        2
  •  10
  •   Will Dean    10 年前

    我相信Resharper遵守[structLayout(layoutKind.sequential)]属性。

    更新:我认为这在编写时适用于类,但在当前版本的Resharper(10)中,它似乎只适用于结构,而不是类。因此,它可能在许多互操作情况下仍然有用,但不是保持任何类顺序的一般方法。

        3
  •  2
  •   SteveC    14 年前

    另一个应用于字段的有用属性是 [FieldOrder(1)] 所以你明确地定义了顺序…我喜欢它作为一个 以防万一 防止重新订购田地

    不确定哪个版本的 FileHelpers 这是因为…我正在使用安装的v2.9.9.0 NuGet