自定义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);

posted @ 2011-10-07 18:47  --中庸--  阅读(2166)  评论(0编辑  收藏  举报