我一直在序列化自定义类型,该类型具有一些内部属性。但是,在使用 System.Web.Script.Serialization.JavaScriptSerializer
的serialize
方法进行序列化时,似乎不会序列化内部属性(因为它在序列化字符串中跳过了内部属性)。从下面的代码和输出可以很容易地理解:
public class MyClass
{
public string Property1 { get; set; }
internal string Property2 { get; set; }
public string Property3 { get; set; }
}
JavaScriptSerializer mySerializer = new JavaScriptSerializer();
string jsonString = mySerializer.Serialize(new MyClass()
{
Property1 = "One",
Property2 = "Twp",
Property3 = "Three"
});
jsonString 的值如下:
{"Property1":"One","Property3":"Three"}
在输出中,您可以看到序列化字符串没有 Property2,这是一个内部属性。是否有逻辑原因不支持在序列化中使用内部属性?
如何解决序列化内部属性的问题(除了将内部属性更改为公共修饰符)?
internal
),这似乎是违反直觉的。 - Will Ray