110,566
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Xml;
using System.IO;
using System.Xml.Serialization;
namespace TestDeserialization
{
public class MainClass
{
public MainClass()
{
Initialize();//1
}
private void Initialize()
{
cl1 = new Class1();
cl2 = new Class2();
}
[DataMember(IsRequired = true, EmitDefaultValue = true, Order = 0)]
public Class1 CL1
{
get
{
return cl1;
}
set
{
cl1 = value;
if (cl1 == null)
{
cl1 = new Class1();
}
}
}
[DataMember(IsRequired = true, EmitDefaultValue = true, Order = 1)]
public Class2 CL2
{
get
{
return cl2;
}
set
{
cl2 = value;
if (cl2 == null)
{
cl2 = new Class2();
}
}
}
private Class1 cl1;
private Class2 cl2;
[OnDeserializing()]
public void Initialize(StreamingContext context)
{
Initialize();//4
}
}
public class Class1
{
public Class1()
{
Initialize();//2//5//7
}
private void Initialize()
{
num1 = 1;
bl1 = true;
}
[DataMember(IsRequired = true, EmitDefaultValue = true, Order = 0)]
public int NUM1
{
get
{
return num1;
}
set
{
num1 = value;
}
}
[DataMember(IsRequired = true, EmitDefaultValue = true, Order = 1)]
public bool BL1
{
get
{
return bl1;
}
set
{
bl1 = value;
}
}
private int num1;
private bool bl1;
[OnDeserializing()]
public void Initialize(StreamingContext context)
{
Console.WriteLine(num1);//8
Console.WriteLine(bl1);
}
}
public class Class2
{
public Class2()
{
Initialize();//3//6//9
}
private void Initialize()
{
num2 = 2;
str2 = "Class2string";
}
[DataMember(IsRequired = true, EmitDefaultValue = true, Order = 0)]
public int NUM2
{
get
{
return num2;
}
set
{
num2 = value;
}
}
[DataMember(IsRequired = true, EmitDefaultValue = true, Order = 1)]
public string STR2
{
get
{
return str2;
}
set
{
str2 = value;
}
}
private int num2;
private string str2;
[OnDeserializing()]
public void Initialize(StreamingContext context)
{
Console.WriteLine(num2);//10
Console.WriteLine(str2);
}
}
class Program
{
static void Main(string[] args)
{
string filePath = "d:\\xmlInfo.xml";
//MainClass cls = new MainClass();
//Stream ostrm = File.Open(filePath, FileMode.Create, FileAccess.ReadWrite);
//XmlWriterSettings settings = new XmlWriterSettings();
//settings.Encoding = System.Text.Encoding.UTF8;
//settings.Indent = true;
//settings.CloseOutput = true;
//XmlWriter writer = XmlDictionaryWriter.Create(ostrm, settings);
//DataContractSerializer serializer = new DataContractSerializer(cls.GetType());
//serializer.WriteObject(writer, cls);
//writer.Close();
FileInfo file = new System.IO.FileInfo(filePath);
XmlTextReader reader = new XmlTextReader(file.Open(FileMode.Open, FileAccess.Read));
DataContractSerializer serializer1 = new DataContractSerializer(typeof(MainClass));
MainClass mcls;
mcls = serializer1.ReadObject(reader, false) as MainClass;
Console.ReadLine();
}
}
}