技术开发 频道

揭开.NET 2.0配置隐藏的秘密

  转换器类型

  CommaDelimitedStringCollectionConverter - 将以逗号分隔的字符串值和CommaDelimitedStringCollection对象相互转换

  GenericEnumConverter - 在字符串和枚举类型之间进行转换

  InfiniteIntConverter - 在字符串和标准无限或整数值之间转换

  InfiniteTimeSpanConverter - 在字符串和标准无限TimeSpan值之间转换

  TimeSpanMinutesConverter - 转换以分钟表示的时间跨度

  TimeSpanMinutesOrInfiniteConverter - 转换以分钟表示(或作为标准的无限时间跨度)的TimeSpan

  TimeSpanSecondsConverter - 转换以秒表示的时间跨度

  TimeSpanSecondsOrInfiniteConverter - 转换以秒表示的TimeSpan,或将其转换为标准的无限时间跨度

  TypeNameConverter - 在类型和字符串值之间转换

  WhiteSpaceTrimStringConverter - 将字符串转换为它的规范化格式

  预制的配置节

  AppSettingsSection - 为 配置节提供配置系统支持

  ConnectionStringsSection - 提供对配置节的编程访问

  ProtectedConfigurationSection - 提供对configProtectedData配置节的编程访问

  IgnoreSection - 为不是由System.Configuration类型处理的配置节提供包装类型定义

  预制配置集合*4

  CommaDelimitedStringCollection - 与CommaDelimitedStringCollectionConverter结合使用(译注:表示以逗号分隔的字符串元素的集合)

  KeyValueConfigurationCollection - 用于在配置节中配置键/值对(译注:包含KeyValueConfigurationElement对象的集合)

  NameValueConfigurationCollection - 用于在配置节中配置名称/值对(译注:包含NameValueConfigurationElement对象的集合)

  注意:

  *1自定义转换器用于在XML文件中字符串表示与配置对象模型中强(译注:natively,或者翻译为“原生”?下同)类型之间转换

  *2自定义验证器是用来验证在配置对象模型强类型数据的准确性

  *3这关系到配置对象模型的概念,将在下一节讨论

  *4这些常见的配置集合可用于自定义配置节

  2、对象模型配置概念

  在我们接下来创建一些自定义配置之前,有必要先来学习一些对象模型配置的概念。.NET 2.0配置系统最终提供了一组对象表示配置设置的结构和强类型访问配置数据。这与在XML文件中存储和检索配置的更多通用的方法相反,它们通常需要通过DOM或读取流读取值,通过DOM或者写流将改变写回文件。在我私人写的更高级的配置系统中,包括一些缓存机制来加速读取和写配置值。创建一个高度可定制的配置文件,同时保持良好的性能一直是一个难点。

  .NET 2.0的配置对象模型不在需要那些庞大的处理XML配置数据的方法。作为一个简单的例子,将ConnectionStrings节对通用配置元素的配置管理整合进ConfigurationManager对象,通过一个唯一的名字非常容易查找和访问一个指定的数据库连接串。这是因为有一个.NET 集合类,它列出连接字符串配置的对象。每一个连接字符串对象都被一个名字键标记。.NET类对XML元素的映射如下所示:

ConnectionStringsSection<connectionStrings>
ConnectionStringSettingsCollection[implicitly created]
ConnectionStringSettings<add name="MyConnection" connectionString="blahblah">

         访问MyConnetcion就如下面所示代码一样简单:

string myConnectionString =
    ConfigurationManager.ConnectionStrings[
"MyConnection"].ConnectionString

    ConnectionStrings非常简单,所以让我们来看一个经常使用,但不那么明显的.NET 2.0配置系统:<system.web>配置组。你可能不知道它,但是但这一个复杂的配置节使用了一组类,用这组类我们可以创建自定义的配置节。让我们以class>emement关系的形式来看一下System.Web.Configuration对象模型:

Class:

Element:

SystemWebSectionGroup<system.web>
AuthenticationSection<authentication>
AuthorizationSection<authorization>
CustomErrorsSection<customErrors>
CustomErrorsCollection[implicitly created]
CustomError<error statusCode="404" redirect="...">
HttpModulesSection<httpModules>
HttpModuleActionCollection[implicitly created]
HttpModuleAction<add name="myModule" type="...">
HttpHandlersSection<httpHandlers>
HttpHandlerActionCollection[implicitly created]
HttpModuleActionCollection<add verb="*" type="..." path="...">

 

0
相关文章