【问题标题】:Allowing Newtonsoft's JsonConvert access to internal getter/setters允许 Newtonsoft 的 JsonConvert 访问内部 getter/setter
【发布时间】:2016-04-06 09:23:26
【问题描述】:

我有一个带有内部 getter/setter 的类,以防止用户访问此功能(我正在使用 REST api)。但是,这也意味着 JsonConvert 无权访问它们。如何允许 JsonConvert 访问内部功能?

【问题讨论】:

标签: c# json.net internal class-visibility


【解决方案1】:

您应该能够使用 JsonPropertyAttribute 来装饰它们。

void Main()
{
    var x = new Test();
    Console.WriteLine(JsonConvert.SerializeObject(x));
}

// Define other methods and classes here
public class Test 
{
    public Test()
    {
        TestProp = "test";
    }

    [JsonProperty]
    internal string TestProp { get; set; }
}

输出:{"TestProp":"test"}

使用 Linqpad。

【讨论】:

  • 有趣 - 这似乎成功了 - 我一直在搞乱InternalsVisibleTo!有没有一种方法我不必为每个具有内部 getter/setter 的属性执行此操作,因为有很多?
  • 你可以用[JsonObject(MemberSerialization.Fields)]装饰班级。您还可以使用自定义合约解析器,如下所示:stackoverflow.com/a/24107081/5402620
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
相关资源
最近更新 更多