C# C::如何添加名为“的类成员”;“受保护”;

C# C::如何添加名为“的类成员”;“受保护”;,c#,api,json.net,C#,Api,Json.net,我对C相当陌生,但在Objective-C和OOP方面有着丰富的经验。我使用Json.NET自动解析对象的API响应。恰好返回的一个对象具有名为protected的属性。显然这是个问题,因为protected是类成员声明的关键字 "protected": true 是否可以添加名为protected的成员 如果解析器试图设置受保护的属性,是否可以添加触发的setter和getter?(但将该值分配给名为_protected的私有成员) 当解析器遇到名为protected的属性时,我是否应该修改

我对C相当陌生,但在Objective-C和OOP方面有着丰富的经验。我使用Json.NET自动解析对象的API响应。恰好返回的一个对象具有名为protected的属性。显然这是个问题,因为protected是类成员声明的关键字

"protected": true
  • 是否可以添加名为protected的成员
  • 如果解析器试图设置受保护的属性,是否可以添加触发的setter和getter?(但将该值分配给名为_protected的私有成员)
  • 当解析器遇到名为protected的属性时,我是否应该修改解析器使其行为不同
  • 谢谢你的建议。

    1: 对于问题#1:您可以在任何要用作变量名的关键字之前放置@符号

    例如

    public string@protected{get;set;}

    不过,我建议不要这样做。您应该能够将JSON中的“受保护”字段重新映射到POCO中的其他属性

    2: 三:
    由你决定

    我实施了这个解决方案:

    [JsonProperty("protected")] public bool Protected { get; set; }
    

    就像Daniel Mann在他的文章中建议的那样:

    反对它为什么?我无法更改API以返回不同的命名字段,如果它“只是添加@”,为什么不这样做?因为任何继承您代码的开发人员都会立即感到困惑,如果必须这样做,我会给第二个属性访问器“\u protected”,并使用
    [System.ocated]
    标记此项以停止使用。您应该可以使用
    JsonProperty
    属性对其进行重命名。例如,
    [JsonProperty(“protected”)]公共字符串非protected{get;set;}
    网站礼仪是接受我的答案,而不是发布你自己的答案说你使用了我的答案:)
    [JsonProperty("protected")] public bool Protected { get; set; }