大家帮我看一下,这个类序列化后,xml里面怎么没有username和userpwd呢?
  [Serializable]
    public class Program
    {
        private const string Path = "temp.xml";
        private static Program p = new Program();
        private string _userName;        public static string UserName
        {
            get { return p._userName; }
            set { p._userName = value; }
        }        private string _userPwd;        public static string UserPwd
        {
            get { return p._userPwd; }
            set { p._userPwd = value; }
        }
        public Program()
        {        }
        public void Serializable()
        {
            using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + Path, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                XmlSerializer xs = new XmlSerializer(typeof(Program));
                xs.Serialize(fs, p);
            }
        }
        public static void Save()
        {
            p.Serializable();
        }
        static void Main(string[] args)
        {
            Program.UserName = "aaa";
            Program.UserPwd = "bbb";
            Program.Save();
        }
    }

解决方案 »

  1.   

    public static string UserName
    =>
    public string UserName静态属性是不参与序列化的
      

  2.   

    XML序列化可以通过BinaryFormatter或者SoapFormatter实现。请按照以下步骤通过类的静态属性完成XML序列化。
    1. 让类的静态属性实现ISerializable并且把这个类设为Serializable。
    2. 实现GetObjectData方法。
    3. 新建一个和GetObjectData方法相同结构的构造方法。
      

  3.   

    不能用Static的。
    最好定义一个数据类public class User
    {
        public string UserName{get;set;}
        public string UserPwd{get;set;}
    }
     public void Serializable(User u)
    {
     using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + Path, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    XmlSerializer xs = new XmlSerializer(typeof(User));
                    xs.Serialize(fs, u);
                }
    }