如何从XML重建C#类

mca*_*s20 0 c# sql class xml-serialization xml-deserialization

我想在SQL中保存一个ac #.net类的实例,以便以后检索.我可以使用LINQ to SQL来添加一个完整的记录,其中包含构成该类的所有xml.

现在我如何检索该xml并重建类对象实例?

Jes*_*cer 6

将对象序列化为XML字符串:

    public static string ToXml<T>(T obj)
    {
        XmlWriterSettings settings = new XmlWriterSettings();

        settings.OmitXmlDeclaration = true;
        using (Stream stream = new MemoryStream())
        using (XmlWriter writer = XmlWriter.Create(stream, settings))
        {
            new XmlSerializer(obj.GetType()).Serialize(writer, obj);
            writer.Flush();
            stream.Flush();
            stream.Position = 0;
            using (TextReader reader = new StreamReader(stream))
            {
                return reader.ReadToEnd();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

将XML字符串反序列化为对象:

    public static T FromXml<T>(string xml)
    {
        using (TextReader reader = new StringReader(xml))
        {
            try
            {
                return (T)new XmlSerializer(typeof(T)).Deserialize(reader);
            }
            catch (InvalidOperationException)
            {
                // string passed is not XML, return default
                return default(T);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)