知识大全 .NET中自定义配置节点实例详解

Posted

篇首语:追风赶月莫停留,平芜尽处是春山。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 .NET中自定义配置节点实例详解相关的知识,希望对你有一定的参考价值。

.NET中自定义配置节点实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   一 目的  一般应用都有自己的配置文件 如何将配置文件映射到 NET中的对象是有现实意义的事情 在Java中有一个digester开源项目实现了这个功能 下面我一步一步来说明 NET中如何更简单的实现他     二 实现   定义xsd架构文件 我们定义几个简单的架构    源文件如下   <?xml version= encoding= utf ?>  <xs:schema id= MyConfig targetNamespace= ConfigTest elementFormDefault= qualified xmlns= ConfigTest xmlns:mstns= ConfigTest xmlns:xs= >  <xs:plexType name= select mixed= true >  <xs:sequence/>  <xs:attribute name= id type= xs:string />  <xs:attribute name= resultMap type= xs:string />  <xs:attribute name= cacheModel type= xs:string use= optional />  <xs:attribute name= sql type= xs:string />  </xs:plexType>  <xs:plexType name= update mixed= true >  <xs:sequence />  <xs:attribute name= id type= xs:string />  <xs:attribute name= parameterMap type= xs:string />  <xs:attribute name= sql type= xs:string />  </xs:plexType>  <xs:element name= statements >  <xs:plexType>  <xs:sequence>  <xs:element name= select type= select minOccurs= maxOccurs= unbounded />  <xs:element name= update type= update minOccurs= maxOccurs= unbounded />  </xs:sequence>  </xs:plexType>  </xs:element>  </xs:schema>     使用xsd exe生成对应于架构的配置类  xsd exe MyConfig xsd /c    //   // <autogenerated>  //   This code was generated by a tool   //   Runtime Version:   //  //   Changes to this file may cause incorrect behavior and will be lost if  //   the code is regenerated   // </autogenerated>  //     using System Xml Serialization;    //  // This source code was auto generated by xsd Version=   //  namespace ConfigDll      /// <remarks/>  [System SerializableAttribute()]  [System Xml Serialization XmlTypeAttribute(Namespace = ConfigTest )]  [System Xml Serialization XmlRootAttribute(Namespace = ConfigTest IsNullable = false)]  public class statements      private select[] selectField;    private update[] updateField;    /// <remarks/>  [System Xml Serialization XmlElementAttribute( select )]  public select[] select    get    return this selectField;    set    this selectField = value;        /// <remarks/>  [System Xml Serialization XmlElementAttribute( update )]  public update[] update    get    return this updateField;    set    this updateField = value;          /// <remarks/>  [System SerializableAttribute()]  [System Xml Serialization XmlTypeAttribute(Namespace = ConfigTest )]  public class select      private string idField;    private string resultMapField;    private string cacheModelField;    private string sqlField;    /// <remarks/>  [System Xml Serialization XmlAttributeAttribute()]  public string id    get    return this idField;    set    this idField = value;        /// <remarks/>  [System Xml Serialization XmlAttributeAttribute()]  public string resultMap    get    return this resultMapField;    set    this resultMapField = value;        /// <remarks/>  [System Xml Serialization XmlAttributeAttribute()]  public string cacheModel    get    return this cacheModelField;    set    this cacheModelField = value;        /// <remarks/>  [System Xml Serialization XmlTextAttribute()]    public string sql    get    return this sqlField;    set    this sqlField = value;          /// <remarks/>  [System SerializableAttribute()]  [System Xml Serialization XmlTypeAttribute(Namespace = ConfigTest )]  public class update      private string idField;    private string parameterMapField;    private string sqlField;    /// <remarks/>  [System Xml Serialization XmlAttributeAttribute()]  public string id    get    return this idField;    set    this idField = value;        /// <remarks/>  [System Xml Serialization XmlAttributeAttribute()]  public string parameterMap    get    return this parameterMapField;    set    this parameterMapField = value;        /// <remarks/>  [System Xml Serialization XmlTextAttribute()]  public string sql    get    return this sqlField;    set    this sqlField = value;             实现IConfigurationSectionHandler接口    #region Using directives    using System;  using System Collections Generic;  using System Text;  using System IO;  using System Reflection;  using System Configuration;  using System Xml;  using System Xml Serialization;  using System Xml Schema;    #endregion    namespace ConfigDll    public class MyConfigHandler : IConfigurationSectionHandler    private Type _configType = typeof(statements);  private string _schemaResourceName = ConfigDll MyConfig xsd ;  private string _schemaNamespace = ConfigTest ;    public MyConfigHandler()        public object Create(object parent object configContext System Xml XmlNode section)    XmlSerializer ser = new XmlSerializer(_configType);    // Create the XmlSchemaSet class   XmlSchemaSet sc = new XmlSchemaSet();    // Add the schema to the collection   Stream schemaStream = Assembly GetAssembly(_configType) GetManifestResourceStream(_schemaResourceName);  sc Add(_schemaNamespace new XmlTextReader(schemaStream));    // Set the validation settings   XmlReaderSettings settings = new XmlReaderSettings();  settings XsdValidate = true;  settings Schemas = sc;  settings ValidationEventHandler += this ValidationEventHandle;    XmlReader reader = XmlReader Create(XmlReader Create(new StringReader(section OuterXml)) settings);  return ser Deserialize(reader);      public void ValidationEventHandle(object sender ValidationEventArgs args)    Console WriteLine( \\t验证错误 + args Message);          当然你可以建一个通用的校验类 这里只为演示  如果使用VS 校验需要使用XmlValidatingReader类 考虑到它在 NET 中已经过时所以使用新的方式     在App Config中使用自定义配置节点  <?xml version= encoding= utf ?>  <configuration>  <configSections>  <section name= statements type= ConfigDll MyConfigHandler ConfigDll />  </configSections>  <stat cha138/Article/program/Java/hx/201311/27083

相关参考

知识大全 ASP.NET中自定义DataGrid分页设置的实现

ASP.NET中自定义DataGrid分页设置的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 hibernate中自定义主键生成器

  Hibernate(目前使用的版本是)中提供了多种生成主键的方式  然而当前的这么多种生成方式未必能满足我们的要求  比如increment可以在一个hibernate实例的应用上很方便的时候但是

知识大全 Nginx负载均衡配置实例详解

Nginx负载均衡配置实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡是我们大流量网

知识大全 hibernate中自定义主键生成器[1]

  Hibernate(目前使用的版本是)中提供了多种生成主键的方式  然而当前的这么多种生成方式未必能满足我们的要求  比如increment可以在一个hibernate实例的应用上很方便的时候但是

知识大全 ASP.NET挪用淘宝API实例详解

ASP.NET挪用淘宝API实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 ASP.NET存储过程自定义分页详解

ASP.NET存储过程自定义分页详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 ASP.NET2.0中创建自定义配置

ASP.NET2.0中创建自定义配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPNE

知识大全 Oracle SQL*NET TCP/IP 的通信模式、配置方法及应用实例

OracleSQL*NETTCP/IP的通信模式、配置方法及应用实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 ASP.NET项目开发指南:自定义Web.Config文件配置节

ASP.NET项目开发指南:自定义Web.Config文件配置节  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 javascript中自定义对象的属性方法分享

这篇文章介绍了在javascript中自定义对象的属性方法有需要的朋友可以参考一下   首先介绍下关联数组复制代码代码如下:<script>vartest=newObject()