saucer能帮忙看一下吗,关于xml反序列化,可是.net的bug?
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
namespace Customers
{
[XmlRoot("customer")]
public class Customer
{
public String Name;
public String Address;
public String PhoneNumber;
}
[XmlRoot("customer")]
public class CustomerType
{
public String name;
public String address;
public String phone;
}
public class Class1
{
[STAThread]
public static void Main(string[] args)
{
Customer t=new Customer();
t.Name=" Ballinger";
t.Address="1 Microsoft Way";
t.PhoneNumber="(425)555-1212";
System.Xml.Serialization.XmlSerializer ser=new System.Xml.Serialization.XmlSerializer(typeof(Customer));
FileStream stream=new FileStream(
"cust.xml",FileMode.OpenOrCreate);
ser.Serialize(stream,t);
stream.Close();
System.Xml.Serialization.XmlSerializer ser2=new System.Xml.Serialization.XmlSerializer(typeof(CustomerType));
FileStream inStream=new FileStream("cust.xml",FileMode.Open);
XmlReader reader=new XmlTextReader(inStream);
//这里判断该xml是否可被序列化为customerType的对象
//奇怪的是竟然canserialize的结果为true,但该对象中的字段却没有值
if(ser2.CanDeserialize(reader))
{
Console.WriteLine("Deserializing.........");
CustomerType cust=(CustomerType)ser2.Deserialize(reader);
Console.WriteLine("name:{0}",cust.name);
Console.WriteLine("address:{0}",cust.address);
Console.WriteLine("phone:{0}",cust.phone);
}
else {Console.WriteLine("the type doesn't match");}
inStream.Close();
}
}
}
我觉得这里既然可被序列化,那么应该对象中的字段会有值才对阿