111,093
社区成员




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.IO;
namespace Xml_DataContractSerializer
{
class Program
{
static void Main(string[] args)
{
Customer cc = new Customer(1, "John");
SerializeToXML<Customer>(cc, "X:/Users/lx/Desktop/Log/customer.xml");
Console.Read();
}
/// <summary>
/// 序列化辅助方法
/// </summary>
static void SerializeToXML<T>(T instance, string fileName)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
using (XmlWriter writer = new XmlTextWriter(fileName, Encoding.UTF8))
{
serializer.WriteObject(writer, instance);
}
}
[DataContract]
public class Customer
{
public Customer(int id, string cn)
{
Unid = id;
CustomerName = cn;
}
[DataMember]
public int Unid { get; set; }
[DataMember]
public string CustomerName { get; set; }
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum, Inherited = false, AllowMultiple = false)]
public sealed class DataContractAttribute : Attribute
{
// 摘要:初始化 System.Runtime.Serialization.DataContractAttribute 类的新实例。
public DataContractAttribute() { }
// 摘要: 获取或设置一个值,该值指示是否保留对象引用数据。
// 返回结果:如果使用标准 XML 保留对象引用数据,则为 true;否则为 false。 默认值为 false。
public bool IsReference { get; set; }
// 摘要: 获取或设置类型的数据协定的名称。
// 返回结果:数据协定的本地名称。 默认值是应用了该属性的类的名称。
public string Name { get; set; }
// 摘要:获取或设置类型的数据协定的命名空间。
// 返回结果:协定的命名空间。
public string Namespace { get; set; }
}
// 摘要:当应用于类型的成员时,指定该成员是数据协定的一部分并可由 System.Runtime.Serialization.DataContractSerializer进行序列化。
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, Inherited = false, AllowMultiple = false)]
public sealed class DataMemberAttribute : Attribute
{
// 摘要:初始化 System.Runtime.Serialization.DataMemberAttribute 类的新实例。
public DataMemberAttribute() { }
// 摘要:获取或设置一个值,该值指定是否对正在被序列化的字段或属性的默认值进行序列化。
// 返回结果:如果应该在序列化流中生成成员的默认值,则为 true;否则为 false。 默认值为 true。
public bool EmitDefaultValue { get; set; }
// 摘要:获取或设置一个值,该值用于指示序列化引擎在读取或反序列化时成员必须存在。
// 返回结果:如果该成员是必需的,则为 true;否则为 false。
// 异常:System.Runtime.Serialization.SerializationException:该成员不存在。
public bool IsRequired { get; set; }
// 摘要:获取或设置数据成员名称。
// 返回结果:该数据成员的名称。 默认值是应用该属性的目标的名称。
public string Name { get; set; }
// 摘要:获取或设置成员的序列化和反序列化的顺序。
// 返回结果:序列化或反序列化的数字顺序。
public int Order { get; set; }
}
}
}