zoukankan      html  css  js  c++  java
  • 扩展配置文件结构

    <appSetting>元素保存应用程序使用自定义信息。它有两个明显的限制,首先,它不能保存结构化的信息,如列表。

    2:它不能灵活的处理各种数据类型。它只能使用单一字符串。

    幸好asp.net使用一个模块化的高度可扩展的配置模型。

    有三个基本的步骤:

    1:确定要配置文件中保存的信息以及如何把他们组织到元素和特性。最理想的是,对于每个概念上相关的设置组都有一个元素,通过特性保存它们。

    2:对于每个新元素,创建一个C#类封装它的信息。

    3:在配置文件里注册新节。

    编码过程:

    1:创建Section类

    </appSettings>
        <connectionStrings/>
        <!--<orderService available="true" pollTimeout="00:01:00"
                   location="tcp://OrderComputer:8010/OrderService"/>-->
        <orderService available="true" pollTimeout="00:01:00">
            <location computer="OrderComputer" port="8010" endpoint="OrderService"/>
        </orderService>
        <system.web>

    这个是我自定义的<orderService>

    public class OrderService : ConfigurationSection
    {
        [ConfigurationProperty("available",
        IsRequired = false, DefaultValue = true)]
        public bool Available
        {
            get { return (bool)base["available"]; }
            set { base["available"] = value; }
        }

        [ConfigurationProperty("pollTimeout",
        IsRequired = true)]
        public TimeSpan PollTimeout
        {
            get { return (TimeSpan)base["pollTimeout"]; }
            set { base["pollTimeout"] = value; }
        }

        [ConfigurationProperty("location",
        IsRequired = true)]
        public Location Location
        {
            get { return (Location)base["location"]; }
            set { base["location"] = value; }
        }
    }

    public class Location : ConfigurationElement
    {
        [ConfigurationProperty("computer",
        IsRequired = true)]
        public string Computer
        {
            get { return (string)base["computer"]; }
            set { base["computer"] = value; }
        }

        [ConfigurationProperty("port",
        IsRequired = true)]
        public int Port
        {
            get { return (int)base["port"]; }
            set { base["port"] = value; }
        }

        [ConfigurationProperty("endpoint",
        IsRequired = true)]
        public string Endpoint
        {
            get { return (string)base["endpoint"]; }
            set { base["endpoint"] = value; }
        }
    }

    可以看到每个属性都使用ConfigurationProperty特性映射到相应的特性名称。


    2:注册Section类


    <configSections>
            <section name="orderService" type="OrderService"/>
            <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
                <sectionGroup name="scripting" type="System.Web.Con...

    3:如果调用

    Configuration config =
                System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(
                      Request.ApplicationPath  );

            OrderService custSection = (OrderService)config.GetSection("orderService");

            lblInfo.Text += "Retrieved service information...<br />" +
              "<b>Location (computer):</b> " + custSection.Location.Computer +
              "<br /><b>Available:</b> " + custSection.Available.ToString() +
              "<br /><b>Timeout:</b> " + custSection.PollTimeout.ToString() + "<br /><br />";

    结果:

    Retrieved service information...
    Location (computer): OrderComputer
    Available: True
    Timeout: 00:01:00

    This page was served at 2010-11-16 8:06:26

  • 相关阅读:
    jpa命名规则 jpa使用sql语句 @Query
    spring data jpa 查询No property ... found for...Did you mean '...'?
    maven配置sqlServer的依赖
    SpringBoot 使用Swagger2打造在线接口文档(附汉化教程)
    本地git库gitlab库链接服务器库 idea git 配置 gitlab 配置 git生成ssh公钥
    连接sqlServer数据库&jpa调用存储过程Java获取存储过程返回的多个结果集JAVA调用sqlserver存储过程的实现(返回多个结果集的实现)jdbc多结果集(getMoreResults)
    Springmvc的handler method参数绑定常用的注解
    Java map 详解
    Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
    @Controller和@RestController的区别
  • 原文地址:https://www.cnblogs.com/gull/p/1878151.html
Copyright © 2011-2022 走看看