我有一个带有静态属性的嵌套类,如下所示:
public class A {
public class B {
public static string BString = null;
}
}
这是JSON:
{
B {
"BString" : "Hello"
}
}
我想反序列化这个JSON,以便它设置嵌套的静态值(A.B.BString应该包含字符串Hello)。我不太了解newtonsoft,但有没有办法让它做到这一点,而不必我实例化B类。 我根本不想更改类以使其工作。我知道您可以将[JsonProperty]添加到静态属性以使其正确反序列化但这不适用于嵌套类。
答案 0 :(得分:1)
通常,您不能在静态类上使用序列化。如果有一个包含两个不同A类的列表,哪个类将赢得比赛并设置静态B值?
<强>问题:强> 您是否真的有必要使用嵌套(静态)类?它背后的原因是什么?为什么不使用非嵌套类?
如果你真的想要实现它,可能会有一个解决方法:创建一个新属性,其中设置和检索静态值。希望这个新属性将被(de)序列化。
看到这个肮脏的例子:
public class A
{
public B SetBProperty
{
get { return B.BString; }
set { B.BString = value; }
}
public class B {
public static string BString = null;
}
}
请记住,在List<A>
(de)序列化的情况下,最后一个(de)序列化项目将获胜并设置该值。