zoukankan      html  css  js  c++  java
  • IXmlSerializable 实现

    #region IXmlSerializable 成员
    public static MetaEntity Load(string path)
    {
    using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
    XmlSerializer serializer
    = new XmlSerializer(typeof(MetaEntity));
    return (MetaEntity)serializer.Deserialize(stream);
    }
    }

    public void Save(string path)
    {
    using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.Write))
    {
    XmlSerializer serializer
    = new XmlSerializer(this.GetType());
    serializer.Serialize(stream,
    this);
    }
    }

    public System.Xml.Schema.XmlSchema GetSchema()
    {
    throw new NotSupportedException();
    }

    public void ReadXml(XmlReader reader)
    {
    lock (stored)
    {
    this.MappedName = reader.GetAttribute("name");
    string spName, typeQualifiedName, propertyQualifiedName;
    BindingFlags bingdingFlags
    = BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty;
    if (reader.ReadToDescendant("storedProcedure"))
    {
    do
    {
    spName
    = reader.GetAttribute("name");
    List
    <TypeConverter> typeList = new List<TypeConverter>();
    if (reader.ReadToDescendant("converter"))
    {
    do
    {
    TypeConverter type
    = new TypeConverter(Type.GetType(typeQualifiedName = reader.GetAttribute("qualifiedName")));
    if (reader.ReadToDescendant("add"))
    {
    do
    {
    PropertyConverter property
    = new PropertyConverter(reader.GetAttribute("name"), bool.Parse(reader.GetAttribute("nullable")), type.EntityType.GetProperty(propertyQualifiedName = reader.GetAttribute("qualifiedName"), bingdingFlags));
    if (property.EntityProperty == null)
    {
    throw new MappingException(propertyQualifiedName);
    }
    type.Add(property);
    }
    while (reader.ReadToNextSibling("add"));
    }
    typeList.Add(type);
    }
    while (reader.ReadToNextSibling("converter"));
    }
    stored.Add(spName, typeList);
    }
    while (reader.ReadToNextSibling("storedProcedure"));
    }
    }
    }

    public void WriteXml(XmlWriter writer)
    {
    lock (stored)
    {
    writer.WriteAttributeString(
    "name", this.MappedName);
    ArrayList spNameList
    = new ArrayList(stored.Keys);
    spNameList.Sort();
    foreach (string spName in spNameList)
    {
    List
    <TypeConverter> list = (List<TypeConverter>)stored[spName];
    lock (list)
    {
    writer.WriteStartElement(
    "storedProcedure");
    writer.WriteAttributeString(
    "name", spName);
    foreach (TypeConverter typeConverter in list)
    {
    writer.WriteStartElement(
    "converter");
    writer.WriteAttributeString(
    "qualifiedName", typeConverter.EntityType.AssemblyQualifiedName);
    foreach (PropertyConverter propertyConverter in typeConverter)
    {
    writer.WriteStartElement(
    "add");
    writer.WriteAttributeString(
    "name", propertyConverter.MappedName);
    writer.WriteAttributeString(
    "nullable", propertyConverter.IsNullable.ToString());
    writer.WriteAttributeString(
    "qualifiedName", propertyConverter.EntityProperty.Name);
    writer.WriteEndElement();
    }
    writer.WriteEndElement();
    }
    writer.WriteEndElement();
    }
    }
    }
    }
    #endregion

      

  • 相关阅读:
    3、linux网络编程--网络字节序
    1、linux网络编程--网络协议
    第四篇:进程
    第五篇:进程通信
    第六篇:线程原理
    操作系统基本概念
    第一篇:基础原理篇
    第二篇:操作系统历史
    (2)linux下的简单的socket通信实例
    (3)基于linux的socket编程TCP半双工client-server聊天程序
  • 原文地址:https://www.cnblogs.com/Googler/p/2127814.html
Copyright © 2011-2022 走看看