大家帮我看一下,这个类序列化后,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();
}
}
[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();
}
}
=>
public string UserName静态属性是不参与序列化的
1. 让类的静态属性实现ISerializable并且把这个类设为Serializable。
2. 实现GetObjectData方法。
3. 新建一个和GetObjectData方法相同结构的构造方法。
最好定义一个数据类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);
}
}