-2

この質問がすでに出されていることは知っていますが、奇妙な問題があり、どうすればよいかわかりません:

public static class XmlHelper
{
    public static T Deserialize<T>(string xml)
    {
        using (var sr = new StringReader(xml))
        {
            var xs = new XmlSerializer(typeof(T));
            return (T)xs.Deserialize(sr);
        }
    }

    public static string Serialize(object o)
    {
        using (var sw = new StringWriter())
        {
            using (var xw = XmlWriter.Create(sw))
            {
                var xs = new XmlSerializer(o.GetType());
                xs.Serialize(xw, o);
                return sw.ToString();
            }
        }
    }
}

[Serializable]
public class MyClass
{
    public string Property1 {get;set;}
    public int Property2 {get;set;}
}

クラスをシリアル化しています:

var a = XmlHelper.Serialize(new MyClass{ Property1 = "a", Property2 = 3 });
var b = XmlHelper.Deserialize<object>(a);

エラー: XML ドキュメントにエラーがあります (1、41)。

編集: as オブジェクトをデシリアライズしたいのですが、可能ですか?

4

1 に答える 1

1

シリアル化に正しい型を渡していません。コードを次のように変更してください。

public static string Serialize<T>(T o)
{
    using (var sw = new StringWriter())
    {
        using (var xw = XmlWriter.Create(sw))
        {
            var xs = new XmlSerializer(typeof(T));
            xs.Serialize(xw, o);
            return sw.ToString();
        }
    }
}
...
// we don't need to explicitly define MyClass as the type, it's inferred
var a = XmlHelper.Serialize(new MyClass{ Property1 = "a", Property2 = 3 });
var b = XmlHelper.Deserialize<MyClass>(a);
于 2013-01-11T14:20:53.307 に答える