【问题标题】:Resharper 9 File Layout: defining sort order when sorting by access modifier not possible?Resharper 9 文件布局:无法在按访问修饰符排序时定义排序顺序?
【发布时间】:2015-01-06 16:20:27
【问题描述】:

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

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

9.0 之前的样子是这样的:

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

... 导致按定义对属性进行排序 - 特别是:private first!

在 9.0 中,使用新设计器时生成的 XAML 如下:

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

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

R# 9.0 中有没有办法像这样控制publicprivate 等成员的顺序?

顺便说一句。其他排序规范也存在同样的问题,例如 Kind:无法再指定,例如property 应该在 method 等之前。

【问题讨论】:

    标签: c# resharper resharper-9.0


    【解决方案1】:

    事实证明,仍然可以按照 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>
    

    【讨论】:

    • 你能分享你的 xaml 吗?我很难让它发挥作用。
    • @RobertChrist:我编辑了我的答案,因为我无法在评论部分正确显示代码块。 HTH
    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多