举一个简单的、有点陈词滥调的例子:
public interface IShape
{
public void Draw();
}
public class Rectangle : IShape
{
public Double X;
public Double Y;
public Double Width;
public Double Height;
public void Draw()
{
// draw the rectangle ...
}
}
public class Circle : IShape
{
public Double X;
public Double Y;
public Double Radius;
public void Draw()
{
// draw the Circle ...
}
}
使用JavaScriptSerializer,可以向其中添加什么格式的类型提示(如果有的话)以对其进行属性反序列化?
JavaScriptSerializer js = new JavaScriptSerializer();
Shape s = js.Deserialize<Shape>("{ \"X\": 1.0, \"Y\": 1.0, \"Radius\": 3.0 }");
该文档简要提到了使用__type
属性:
使用 JSON 字典语法的 JavaScript 对象。包含一个名为“__type”的特殊元数据属性以确保正确反序列化。确保公共实例属性具有 get 和 set 访问器以确保正确的反序列化。
但是,我找不到任何特定于JavaScriptSerializer
指定正确格式或如何Serialize()
包含该属性的文档。
- 我需要做什么才能
Serialize()
包含正确的类型提示? - 以什么格式,如果手动编写,我需要包含类型提示
Deserialize()
吗?