• 自定义app.config节点(原创) 中庸


         前些天,做过自定义app.config节点的小测试.今天看的时候,把无关的代码去掉,用最少的代码说明问题.以下实例是通过继承ConfigurationSection实现的

     一.效果如下

     <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="CustomSection" type="CustomSectionTest.CLSCustomSection, CustomSectionTest" />
      </configSections>
      <CustomSection fileName="default.txt" maxUsers="1000" maxIdleTime="00:15:00" />
    </configuration>
    二.代码

        1.自定义类代码方法一

           

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;

    namespace CustomSectionTest
    {
    public sealed class CLSCustomSection : ConfigurationSection
    {

    private ConfigurationPropertyCollection _Properties;

    private readonly ConfigurationProperty _FileName =
    new ConfigurationProperty("fileName",
    typeof(string), "default.txt",
    ConfigurationPropertyOptions.IsRequired);

    private readonly ConfigurationProperty _MaxUsers =
    new ConfigurationProperty("maxUsers",
    typeof(long), (long)1000,
    ConfigurationPropertyOptions.None);

    private readonly ConfigurationProperty _MaxIdleTime =
    new ConfigurationProperty("maxIdleTime",
    typeof(TimeSpan), TimeSpan.FromMinutes(5),
    ConfigurationPropertyOptions.IsRequired);
    public CLSCustomSection()
    {
    _Properties =
    new ConfigurationPropertyCollection();

    _Properties.Add(_FileName);
    _Properties.Add(_MaxUsers);
    _Properties.Add(_MaxIdleTime);
    }


    protected override ConfigurationPropertyCollection Properties
    {
    get
    {
    return _Properties;
    }
    }

    public string FileName
    {
    get
    {
    return (string)this["fileName"];
    }
    set
    {
    this["fileName"] = value;
    }
    }

    public long MaxUsers
    {
    get
    {
    return (long)this["maxUsers"];
    }
    set
    {
    this["maxUsers"] = value;
    }
    }

    public TimeSpan MaxIdleTime
    {
    get
    {
    return (TimeSpan)this["maxIdleTime"];
    }
    set
    {
    this["maxIdleTime"] = value;
    }
    }
    }
    }

             自定义类方法二

                 

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;

    namespace CustomSectionTest
    {
    public sealed class CLSCustomSection : ConfigurationSection
    {
    [ConfigurationProperty("fileName",
    DefaultValue = "default.txt",
    IsRequired = true)]
    public string FileName
    {
    get
    {
    return (string)this["fileName"];
    }
    set
    {
    this["fileName"] = value;
    }
    }
    [ConfigurationProperty("maxUsers",
    DefaultValue = "1000",
    IsRequired = false)]
    public long MaxUsers
    {
    get
    {
    return (long)this["maxUsers"];
    }
    set
    {
    this["maxUsers"] = value;
    }
    }

    [ConfigurationProperty("maxIdleTime",
    DefaultValue = "00:15:00",
    IsRequired = false)]
    public TimeSpan MaxIdleTime
    {
    get
    {
    return (TimeSpan)this["maxIdleTime"];
    }
    set
    {
    this["maxIdleTime"] = value;
    }
    }
    }
    }

        2.调用测试

         CLSCustomSection customsection =(CLSCustomSection)ConfigurationManager.GetSection("CustomSection");
         MessageBox.Show(customsection.FileName);

  • 相关阅读:
    嘉佣坊
    HTTPS
    OWIN 为WebAPI
    C#并行编程
    ASP.NET 运行
    DocFX
    oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解
    Facebook新框架React Native,一套搞定App开发[转]
    MVC 中使用 SignalR 实现推送功能
    生产都消费者模式的一个demo,消费者设置缓存
  • 原文地址:https://www.cnblogs.com/liangjie/p/2200704.html
Copyright © 2020-2023  润新知