C# TPL与XML序列化
我试图将我的序列化方法编写为以下内容:C# TPL与XML序列化,c#,xml-serialization,task-parallel-library,xmlserializer,C#,Xml Serialization,Task Parallel Library,Xmlserializer,我试图将我的序列化方法编写为以下内容: public Task<string> Serialize(object objectToSerialize) { if (objectToSerialize == null) { throw new ArgumentNullException("objectToSerialize"); } Task<string> serialize = new Task<string>
public Task<string> Serialize(object objectToSerialize)
{
if (objectToSerialize == null)
{
throw new ArgumentNullException("objectToSerialize");
}
Task<string> serialize = new Task<string>(
() =>
{
using (StringWriter stringwriter = new StringWriter())
{
XmlSerializer xmlSerializer = new XmlSerializer(objectToSerialize.GetType());
xmlSerializer.Serialize(stringwriter, objectToSerialize);
return stringwriter.ToString();
}
});
return serialize;
}
public Task<T> DeserializeObjectAsync<T>(string xml) where T : class
{
if (string.IsNullOrEmpty(xml))
{
return Task.FromResult<T>(null);
}
return new Task<T>(() =>
{
using (StringReader reader = new StringReader(xml))
{
using (XmlReader xmlReader = XmlReader.Create(reader))
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
T theObject = (T)serializer.Deserialize(xmlReader);
return theObject;
}
}
});
}
公共任务序列化(对象对象对象序列化)
{
if(objectToSerialize==null)
{
抛出新ArgumentNullException(“objectToSerialize”);
}
任务序列化=新任务(
() =>
{
使用(StringWriter StringWriter=new StringWriter())
{
XmlSerializer XmlSerializer=新的XmlSerializer(objectToSerialize.GetType());
序列化(stringwriter,objectToSerialize);
返回stringwriter.ToString();
}
});
返回序列化;
}
公共任务反序列化ObjectAsync(字符串xml),其中T:class
{
if(string.IsNullOrEmpty(xml))
{
返回Task.FromResult(空);
}
返回新任务(()=>
{
使用(StringReader=new StringReader(xml))
{
使用(XmlReader=XmlReader.Create(reader))
{
XmlSerializer serializer=新的XmlSerializer(typeof(T));
T theObject=(T)序列化程序。反序列化(xmlReader);
返回对象;
}
}
});
}
我找不到任何关于如何做的信息。你能发现有什么事情没有做得很好吗?
你能推荐更好的吗?它能正常工作吗?可以用更优雅的方式表达吗?由于XmlSerializer没有公开反序列化异步或SerializeAsync方法,是否有更好的方法执行序列化?您应该阅读TPL团队的以下日志: