如何使用DataContract使用有关自定义对象的信息反序列化XML?

时间:2016-05-05 03:35:54

标签: c# xml wcf serialization

我能够使用以下代码序列化对象列表(List):

public static string Serialize(object obj)
{
    using (MemoryStream memoryStream = new MemoryStream())
    using (StreamReader reader = new StreamReader(memoryStream))
    {
        DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
        serializer.WriteObject(memoryStream, obj);
        memoryStream.Position = 0;
        return reader.ReadToEnd();
    }
}

但是,我无法使用此代码反序列化:

public static object Deserialize(string xml, Type toType)
{
    using (Stream stream = new MemoryStream())
    {
        byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
        stream.Write(data, 0, data.Length);
        stream.Position = 0;
        DataContractSerializer deserializer = new DataContractSerializer(toType);
        return deserializer.ReadObject(stream);
    }
}

我无法理解这个问题。 我通过调用它来使用最后一个方法:

反序列化(SerializedObject,List),但我收到错误List<FilesToProcess> is a type, which is not valid in the given context

有人可以帮忙吗?我对此有点过头了。

1 个答案:

答案 0 :(得分:0)

Sooo,我有幸回答我自己的问题。

问题在于我试图分配

的输出

public static object Deserialize(string xml, Type toType)

到List通用名为listOfFiles,当我应该分配给一个对象然后使用

转换为List<FilesToProcess>
List<FilesToProcess listOfFiles = (List<FilesToProcess)listOfFilesObject;