知识大全 .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(目前使用的版本是)中提供了多种生成主键的方式 然而当前的这么多种生成方式未必能满足我们的要求 比如increment可以在一个hibernate实例的应用上很方便的时候但是
Nginx负载均衡配置实例详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡是我们大流量网
Hibernate(目前使用的版本是)中提供了多种生成主键的方式 然而当前的这么多种生成方式未必能满足我们的要求 比如increment可以在一个hibernate实例的应用上很方便的时候但是
ASP.NET挪用淘宝API实例详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
ASP.NET存储过程自定义分页详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n
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中自定义对象的属性方法有需要的朋友可以参考一下 首先介绍下关联数组复制代码代码如下:<script>vartest=newObject()