详解C#读取Appconfig中自定义的节点

下面是详解C#读取Appconfig中自定义的节点的完整攻略。

一、准备工作

在开始之前,需要先在App.config配置文件中定义自定义节点。可以按照以下格式添加:

<configuration>
  <configSections>
    <section name="customSection" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <customSection>
    <add key="key1" value="value1" />
    <add key="key2" value="value2" />
  </customSection>
</configuration>

其中,customSection是自定义节点的名称,key1key2是自定义节点中的自定义键值对。

二、读取自定义节点的值

方法一:

可以使用ConfigurationManager类的AppSettings属性读取自定义节点的值。示例代码如下:

using System.Configuration;

// 读取自定义节点的值
string value1 = ConfigurationManager.AppSettings["customSection:key1"];
string value2 = ConfigurationManager.AppSettings["customSection:key2"];

方法二:

可以使用ConfigurationManager类的GetSection方法和CustomSection类读取自定义节点的值。示例代码如下:

using System.Configuration;

// 获取自定义节点
CustomSection customSection = ConfigurationManager.GetSection("customSection") as CustomSection;

// 读取自定义节点的值
string value1 = customSection.Settings["key1"].Value;
string value2 = customSection.Settings["key2"].Value;

注意:使用这种方法需要创建一个CustomSection类,并继承ConfigurationSection类。具体的代码如下:

using System.Configuration;

public class CustomSection : ConfigurationSection
{
    [ConfigurationProperty("", IsRequired = true, IsDefaultCollection = true)]
    public KeyValueConfigurationCollection Settings
    {
        get { return (KeyValueConfigurationCollection)this[""]; }
        set { this[""] = value; }
    }
}

三、完整示例

下面给出一个完整的示例代码,包括定义自定义节点和读取自定义节点的值两部分。

定义自定义节点

<configuration>
  <configSections>
    <section name="customSection" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <customSection>
    <add key="key1" value="value1" />
    <add key="key2" value="value2" />
  </customSection>
</configuration>

读取自定义节点的值

using System;
using System.Configuration;

public class Program
{
    public static void Main(string[] args)
    {
        // 方法一:使用ConfigurationManager.AppSettings读取自定义节点的值
        string value1 = ConfigurationManager.AppSettings["customSection:key1"];
        string value2 = ConfigurationManager.AppSettings["customSection:key2"];
        Console.WriteLine("Method 1:");
        Console.WriteLine("key1={0}", value1);
        Console.WriteLine("key2={0}", value2);

        // 方法二:使用ConfigurationManager.GetSection和CustomSection类读取自定义节点的值
        CustomSection customSection = ConfigurationManager.GetSection("customSection") as CustomSection;
        string value3 = customSection.Settings["key1"].Value;
        string value4 = customSection.Settings["key2"].Value;
        Console.WriteLine("Method 2:");
        Console.WriteLine("key1={0}", value3);
        Console.WriteLine("key2={0}", value4);

        Console.ReadLine();
    }
}

public class CustomSection : ConfigurationSection
{
    [ConfigurationProperty("", IsRequired = true, IsDefaultCollection = true)]
    public KeyValueConfigurationCollection Settings
    {
        get { return (KeyValueConfigurationCollection)this[""]; }
        set { this[""] = value; }
    }
}

希望这份攻略能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解C#读取Appconfig中自定义的节点 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • netcore mvc efcore 简单框架搭建+增删改查

    该例子使用的数据库是 mysql;.net core 框架,版本(sdk)是3.1。 一:创建个net core 版本的mvc  目标框架选   net core3.1  二:项目创建好之后  先安装今天要使用到的nuget包(下载的包最好也是3.1版本的) Microsoft.EntityFrameworkCore; Microsoft.EntityFra…

    C# 2023年4月22日
    00
  • C#异步的世界(下)

    当异步操作越来越普及,开发者在C#异步编程中应该如何实现呢?本文将继续讲解C#异步的世界(下),从Task和async/await的用法及实现机制,以及TPL的使用等方面进行详细介绍,帮助读者更好地掌握异步编程。 Task和async/await Task的定义和用法 Task是.NET Framework 4.0中新增的一种类型,用于表示尚未完成的操作。通…

    C# 2023年5月14日
    00
  • C# 16进制与字符串、字节数组之间的转换

    下面我将详细讲解C#中16进制与字符串、字节数组之间的转换。 字符串与16进制转换 字符串转16进制 我们可以使用BitConverter和Encoding提供的方法来将字符串转化为16进制。 以下是将字符串转化为16进制的示例代码: string str = "Hello World!"; byte[] bytes = Encoding…

    C# 2023年6月7日
    00
  • C#实现把科学计数法(E)转化为正常数字值

    下面是详细讲解“C# 实现把科学计数法(E)转化为正常数字值”的攻略。 问题描述 在 C# 中处理较大或较小的浮点数时,可能会出现科学计数法(E)的表达式。例如,$1.23 \times 10^{3}$ 表示为 1.23E+3。如果需要在 C# 中将此类表达式转换为正常数字值,该怎么做呢? 解决方案 可以使用 double.Parse() 或者 double…

    C# 2023年6月7日
    00
  • ASP.NET在IIS7中上下文中不可用的解决方法

    在IIS7中,ASP.NET应用程序可能会遇到上下文不可用的问题。这可能是由于IIS7的集成模式引起的。本文将提供详解“ASP.NET在IIS7中上下文中不可用的解决方法”的完整攻略,包括如何解决上下文不可用的问题、如何在IIS7中配置ASP.NET应用程序等。 解决上下文不可用的问题 在IIS7中,ASP.NET应用程序可能会遇到上下文不可用的问题。这可能…

    C# 2023年5月15日
    00
  • WinForm实现按名称递归查找控件的方法

    下面开始讲解WinForm实现按名称递归查找控件的方法的攻略。 什么是WinForm? WinForm是Windows Forms的缩写,是一个在Windows操作系统上创建桌面应用程序的API。WinForm允许开发人员在Windows的桌面环境中创建GUI应用程序,通过WinForm框架,开发人员可以方便地创建一个能够响应用户操作的UI。 控件查找的应用…

    C# 2023年6月6日
    00
  • Unity实现简单的多人聊天工具

    Unity实现简单的多人聊天工具攻略 前置知识 在进行本教程实践之前,你需要掌握以下知识: 基本的Unity游戏开发知识 C#编程语言基础 网络编程基础知识 准备工作 在进行本教程实践之前,你需要准备以下工具: Unity引擎 Visual Studio编程工具 Photon Unity Network插件 Git版本控制工具 实现步骤 Step 1. 引入…

    C# 2023年6月3日
    00
  • C#委托与事件初探

    接下来我将详细讲解 “C#委托与事件初探”的完整攻略。在C#语言中,委托是一种类型,它可以封装一个或多个参数及返回类型相同的方法。而事件是类或对象对某个操作的响应,它会调用一个或多个相应事件的方法。接下来,我将分别介绍委托和事件的实现方式。 C#委托 什么是委托? 在 C# 中,“委托”是一个引用类型变量,其变量定义由两部分组成,变量声明和变量实例化。它可以…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部