Resharper:不要更改 JSON 类 中成员变量的顺序

Resharper: Don't change order of member variables in JSON classes

可以在语言、C#、类型成员布局的 ReSharper 选项中设置成员的顺序。 Resharper 正在正确地做这件事。但是,我想排除某些包含 JSONProperty 属性的 classes。

因此,例如,请参阅下面的 class。我不希望 Resharper 重新排序其中的成员。

internal class ExecutionParametersJson
{
    [JsonProperty("Factor")]
    public string Factor { get; set; }

    [JsonProperty("Penalty")]
    public string Penalty { get; set; }

    [JsonProperty("Origin")]
    public string Origin { get; set; }

    [JsonProperty("InterFactor")]
    public string InterFactor { get; set; }
}

我正在使用最新版本的 Resharper。

谁能告诉我如何配置 Resharper 来实现这个目标?

实际上,我尝试将Order 属性放入其中。但这没有任何区别。

[JsonProperty("Factor", Order = 1)]
public string Factor{ get; set; }

However, I would like to exclude certain classes which contain JSONProperty attribute.

是的,这很容易做到。

鉴于此示例代码,请注意我包含的其他属性纯粹是为了证明后面的观点:

internal class ExecutionParametersJson
{
    [JsonProperty("Factor")]
    public string Factor { get; set; }

    public string SomeProperty { get; set; }

    [JsonProperty("Penalty")]
    public string Penalty { get; set; }

    [JsonProperty("Origin")]
    public string Origin { get; set; }

    public int SomeOtherProperty { get; set; }

    [JsonProperty("InterFactor")]
    public string InterFactor { get; set; }
}

...然后选择Resharper.Options.Code Editing.c#.File Layout,出现花样列表:

选择您喜欢的模式。这里我选择了Default Pattern。我过去一直在添加它,所以它看起来可能会有所不同。

向下滚动直到找到 Properties 的区域,您可能需要像这样创建它:

Select Properties, Indexers,确保 Sort By 设置为 Name.

Double-click 属性,索引器。出现条件编辑器。添加top-level条件; Not 并指定 JsonProperty

现在 运行 Resharper.Edit.Cleanup 代码 在有问题的文件上。除具有 JsonProperty 属性的属性外,所有属性都将按字母顺序排序并放入标题为 Properties.

region
internal class ExecutionParametersJson
{
    #region Properties

    public int SomeOtherProperty { get; set; }
    public string SomeProperty { get; set; }

    #endregion

    [JsonProperty("Factor")]
    public string Factor { get; set; }

    [JsonProperty("Penalty")]
    public string Penalty { get; set; }

    [JsonProperty("Origin")]
    public string Origin { get; set; }

    [JsonProperty("InterFactor")]
    public string InterFactor { get; set; }
}

现在我在此处包含的其他属性只是为了证明您如何有条件地格式化成员。随意删除这些属性; #region 或根据您的喜好自定义。

继续前进

您可能需要稍微整理一下并在 Resharper 中创建一个名为 JSON 类[=66 的特定 模式 =] 或类似的东西。