类中的XML反序列化

时间:2016-05-02 11:03:18

标签: c# xml serialization

我第一次尝试了XML序列化。以下代码按预期工作,但我不想使用这个" copyFrom"方法。

是否有更好的方法可以将保存和加载方法保存在类本身中?

namespace Test
{
    [Serializable]
    public class Settings
    {
        public struct Connection
        {
            [XmlAttribute ("user")]
            public string sUser;

            [XmlAttribute ("domain")]
            public string sDomain;
        }

        public Connection connection;

        public Settings ()
        {
            connection.sUser = "";
            connection.sDomain = "";
        }

        internal void loadFromFile ()
        {
            if (File.Exists (Constants.STORAGE_SETTINGS_FILE))
            {
                using (FileStream filestream = new FileStream (Constants.STORAGE_SETTINGS_FILE, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    copyFrom ((Settings)new XmlSerializer (typeof (Settings)).Deserialize (filestream));
                }
            }
        }

        internal void saveToFile ()
        {
            using (StreamWriter streamwriter = new StreamWriter (Constants.STORAGE_SETTINGS_FILE))
            {
                new XmlSerializer (typeof (Settings)).Serialize (streamwriter, this);
            }
        }

        internal void copyFrom (Settings settings)
        {
            connection.sUser = settings.connection.sUser;
            connection.sDomain = settings.connection.sDomain;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以删除copyFrom方法。

loadFromFile方法中,您可以编写

connection = ((Settings)new XmlSerializer(typeof(Settings)).Deserialize(filestream)).connection;


另请注意,XML序列化不需要Serializable属性。删除它。

相关问题