用于存储技术Demo代码。
- XmlSerializerDemo:Xml Serializer序列化示例,支持未知类型
- EdgeJsDemo:在Asp.net 中调用Edge.Js的示例
Xml Serializer序列化示例,基于XSerializer实现。
- 支持抽象类型,包括基类和接口
- 不需要通过
XmlInclude
在类型定义中预先标记未知类型 - 支持XmlSerializer序列化中的序列化自定义特性,[XmlRoot], [XmlElement], [XmlAttribute]等。
XmlSerializer<RootType> serializer = new XmlSerializer<RootType>(
unknownTyeps //未知类型,如果有其他扩展类型也需要加入
);
//序列化为字符串
string xml = serializer.Serialize(rootTypeObj);
//反序列化
RootType roundTripFoo = serializer.Deserialize(xml);
Edge.Js v8.2.1 在控制台程序中调用实验通过,在Asp.net中调用会抛出AccessViolationException异常,而官方文档中指出Asp.net和控制台使用方式一样,从Edge Issues 来看应该是Edge的一个bug。
在本示例中,Asp.net请求中每次执行js时通过一个控制台程序壳来间接调用Edge,从而绕开Asp.net直接调用Edge时的AccessViolationException异常,当然,这种方式会具有一定的性能损失和一定的功能局限性,但对于性能不高的简单调用倒也是一种解决方案。