我过去使用过XmlSerializer类,发现创建Serilize和Deserialize方法的通用版本似乎很常见。我最近没有任何代码可以提交,所以我搜索了一些并找到了这个页面:http://www.codeproject.com/Articles/233908/Xml-serialization-using-generics#section2。
对于使用XmlSerializer,它看起来非常有用。我开始做一些测试但后来意识到我使用的是TimeSpan类型,而不是Serializable。所以我再次在线搜索,发现DataContractSerializer类确实支持TimeSpan类型。所以实际的代码应该都可以正常工作。
我开始想知道创建一个通用版本的DataContractSerializer类的方式与XmlSerializer看起来一样。在线搜索后,我找不到任何例子。目前我认为可以创建一个通用版本,但我想知道是否有任何意义。
任何对DataContractSerializer有用的人都可以告诉我他们是否偶然遇到过这个问题?在我尝试使用标准类之前,我是不是在设计解决方案?
我的想法是创建一个通用的包装器,它可以放入一个常用的实用程序/工具程序集中,我将尝试并开始构建以供将来工作。
虽然我发现它没有编译,因为它没有实现所需的方法。
答案 0 :(得分:0)
嗯,我想你可以那样做。您实际上也可以编写非泛型版本;这里有两个功能:
public static void Write<T>(T data)
{
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
using (MemoryStream stream = new MemoryStream())
{
dcs.WriteObject(stream, data);
}
}
public static void Write(object data)
{
if (data == null)
throw new ArgumentNullException();
DataContractSerializer dcs = new DataContractSerializer(data.GetType());
using (MemoryStream stream = new MemoryStream())
{
dcs.WriteObject(stream, data);
}
}
总的来说,它允许您保存几行代码,并为您提供一致的界面,只要您正确编写它(并且不要只是复制粘贴它;))我认为&# 39;合理的事情。