ExampleConfigurationSectionHandler.cs
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Configuration;
4
using
System.IO;
5
using
System.Linq;
6
using
System.Runtime.InteropServices.ComTypes;
7
using
System.Text;
8
using
System.Threading.Tasks;
9
using
System.Xml;
10
using
System.Xml.Serialization;
11
12
namespace
SampleConfigSectionHandle
13
{
14
public
sealed
class
ExampleConfigurationSectionHandler : IConfigurationSectionHandler
15
{
16
public
object
Create(
object
parent,
object
configContext, XmlNode section)
17
{
18
var
xmlSerializer =
new
XmlSerializer(
typeof
(UserInfo));
19
20
using
(
var
stream =
new
MemoryStream(Encoding.Default.GetBytes(section.InnerXml)))
21
{
22
var
xmlNode =
XmlReader.Create(stream);
23
24
return
xmlSerializer.Deserialize(xmlNode);
25
}
26
}
27
}
28
29
public
class
UserInfo
30
{
31
public
string
UserName {
get
;
set
; }
32
33
public
string
UserPwd {
get
;
set
; }
34
}
35
}
App.config
1
<?
xml version="1.0" encoding="utf-8"
?>
2
<
configuration
>
3
4
5
<
configSections
>
6
7
<!--
示例配置节
-->
8
<
section
name
="example"
type
="SampleConfigSectionHandle.ExampleConfigurationSectionHandler,SampleConfigSectionHandle"
/>
9
10
</
configSections
>
11
12
<
startup
>
13
<
supportedRuntime
version
="v4.0"
sku
=".NETFramework,Version=v4.5"
/>
14
</
startup
>
15
16
<!--
配置节实例
-->
17
<
example
>
18
19
<
UserInfo
>
20
<
UserName
>
WangYa
</
UserName
>
21
<
UserPwd
>
123456
</
UserPwd
>
22
</
UserInfo
>
23
24
</
example
>
25
26
</
configuration
>
Program.cs
using
System;
using
System.Collections.Generic;
using
System.Configuration;
using
System.Diagnostics;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
namespace
SampleConfigSectionHandle
{
class
Program
{
static
void
Main(
string
[] args)
{
var
config = ConfigurationManager.GetSection(
"
example
"
)
as
UserInfo;
if
(config !=
null
)
{
Console.WriteLine(config.UserName);
Console.WriteLine(config.UserPwd);
}
Console.Read();
}
}
}

