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团队的以下日志: