如何使用DataContractSerializer为generics类型编写自定义序列化程序?
我想编写一个自定义序列化程序,用于将会话状态存储到Azure缓存(预览)中 ,这意味着这个自定义序列化程序必须实现IDataCacheObjectSerializer
( 如果我错了,请告诉我 )。 我需要编写这个custome序列化程序的原因是我需要序列化一些包含一些System.Data.Linq.EntitySet
属性的Linq对象。 默认的序列化程序NetDataContractSerializer
无法序列化EntitySet
。
我的计划是使用DataContractSerializer
编写自定义序列化程序( 我搜索了一些文章,提到DataContractSerializer
可以序列化EntitySet
,所以如果我错了,请告诉我 ),但问题是我如何编写一个可以支持generics的自定义序列化程序类型。
目前,我的自定义序列化程序代码如下:
public class CustomSerializer : IDataCacheObjectSerializer { public CustomSerializer() { } public object Deserialize(System.IO.Stream stream) { /* How can I know the type of object?????? */ DataContractSerializer dcs = new DataContractSerializer("Type of object"); } public void Serialize(System.IO.Stream stream, object value) { DataContractSerializer dcs = new DataContractSerializer(value.GetType()); dcs.WriteObject(stream, value); } }
顺便说一句,我已将Linq序列化模式更改为“单向”
我没有使用IDataCacheObjectSerializer,但常见的解决方案如下所示:
上述就是C#学习教程:如何使用DataContractSerializer为generics类型编写自定义序列化程序?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public sealed class CustomSerializer : IDataCacheObjectSerializer { object IDataCacheObjectSerializer.Deserialize(System.IO.Stream stream) { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); return dcs.ReadObject(stream); } void IDataCacheObjectSerializer.Serialize(System.IO.Stream stream, object value) { if (!(value is T)) { throw new AgrumentException(); } DataContractSerializer dcs = new DataContractSerializer(typeof(T)); dcs.WriteObject(stream, value); } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998035.html