Resharper 9文件布局:按访问修饰符排序时无法定义排序顺序?

时间:2015-01-06 16:20:28

标签: c# resharper resharper-9.0

安装R#9.0后,8.2的自定义文件布局不再起作用了。 我使用布局设计器重新创建了相同的模式,这是9.0中的新功能。

我无法重现的部分是使用访问修饰符的属性的详细排序定义:

9.0之前看起来像这样:

[...]
<Sort>
    <Access Order="private public internal protected-internal protected"/>
</Sort>
[...]

...导致属性按定义排序 - 尤其是:private首先!

在9.0中使用新的Designer时,生成的XAML如下:

[...]
<Entry.SortBy>
    <Access />
</Entry.SortBy>
[...]

...仍然使用访问修饰符对成员进行排序,但使用了一些默认的排序规范。设计人员不允许指定任何其他属性并手动编辑XAML,因为在9.0之前会产生错误。

在R#9.0中是否有办法控制publicprivate等会员的顺序?

<击>顺便说一下。对于Kind等其他排序规范也存在同样的问题:不再可能指定例如property method应该在{{1}}之前等

1 个答案:

答案 0 :(得分:4)

事实证明,排序仍然可以在9.0之前指定 - 但语法略有不同:

[...]
<Entry.SortBy>
    <Access Order="private public internal protectedinternal protected"/>
</Entry.SortBy>
[...]

区别在于protected-internal现在必须是protectedinternal而不是......

另请注意,您必须在XAML视图中手动执行此操作,因为可视布局设计器尚不支持此设置。 (但它会检测您编辑中的错误 - 因此请务必在XAML之间来回切换到Designer视图以检查是否有任何损坏。)

关于种类的第二部分:它们也可以分类。这是对我的疏忽。

修改 整个条目看起来像这样:

<Entry DisplayName="non-private Fields">
  <Entry.Match>
    <And>
      <Kind Is="Field" />
      <Not>
        <Access Is="Private" />
      </Not>
    </And>
  </Entry.Match>
  <Entry.SortBy>
    <Access Order="Public Internal ProtectedInternal Protected Private" />
    <Name Is="Enter Pattern Here" />
  </Entry.SortBy>
</Entry>