5

安装 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>
[...]

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

R# 9.0 中有没有办法像这样控制public, privateetc 成员的顺序?

顺便提一句。其他排序规范也存在相同的问题,例如Kind:不能再指定 egproperty应该放在前面method等。

4

1 回答 1

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>
于 2015-01-06T16:55:23.643 回答