0

试图反序列化这个类的一个实例

[Serializable]
public class InstalledMeter : ISerializable 
{
    public string Description { get; set; }

    public double Latitude { get; set; }
    public double Longitude { get; set; }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("Description", Description);
        info.AddValue("Latitude", Latitude);
        info.AddValue("Longitude", Longitude);
    }
}

实例:

new InstalledMeter {Description = "Something", Latitude = 0.0, Longitude = 0.0};

我的序列化方法

public static class SerializeString
{
    public static string SerializeObject<T>(this T toSerialize)
    {
        var xmlSerializer = new XmlSerializer(toSerialize.GetType());
        var textWriter = new StringWriter();

        xmlSerializer.Serialize(textWriter, toSerialize);
        return textWriter.ToString();
    }

    public static T XmlDeserializeFromString<T>(this string objectData)
    {
        return (T)XmlDeserializeFromString(objectData, typeof(T));
    }

    public static object XmlDeserializeFromString(string objectData, Type type)
    {
        var serializer = new XmlSerializer(type);
        object result;

        using (TextReader reader = new StringReader(objectData))
        {
            result = serializer.Deserialize(reader);
        }

        return result;
    }
}

但是当我序列化对象时,它具有这些值 在此处输入图像描述

4

1 回答 1

1

(根据您之前的问题猜测答案 -将参数传递给 mvvmcross viewmodels 时出错

如果您在 MvvmCross 中执行此操作,那么我将完全避免这个 xml 问题,而只使用 JSON 序列化

  var jsonText = JSONConvert.SerializeObject(installedMeter);

  var installedMeter = JSONConvert.DeserializeObject<InstalledMeter>(jsonText);

仅使用:

    public class InstalledMeter
    {
        public string Description { get; set; }
        public double Latitude { get; set; }
        public double Longitude { get; set; }
    }
于 2012-11-06T10:19:38.977 回答