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

时间:2017-08-03 03:02:54

标签: c# resharper

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

例如,请参阅下面的课程。我不想让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; }

1 个答案:

答案 0 :(得分:1)

  

但是,我想排除某些包含JSONProperty属性的类。

是的,可以很容易地完成。

鉴于此代码,请注意我所包含的其他属性纯粹是为了证明以后的要点:

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 ,出现模式列表:

enter image description here

选择您喜欢的模式。在这里,我选择了默认模式。我过去一直在增加它,所以它可能看起来不同。

enter image description here

向下滚动,直到找到属性的区域,您可能需要像这样创建它: enter image description here

选择属性,索引器,确保排序依据设置为名称

enter image description here

双击属性,索引器。条件编辑器出现。添加顶级条件; 并指定 JsonProperty

enter image description here

现在对相关文件运行 Resharper.Edit.Cleanup Code 。除具有JsonProperty属性的属性外,所有属性都将按字母顺序排序,并放入标题为属性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 Classes 的特定模式