c#配置文件中自定义块节点的方法

 更新时间:2023年10月08日 11:00:40   作者:大巨头  
在.netcore中我们非常方便获取配置文件节点参数,但是在非.netcore下一般 我们是使用中方法,本文我们将给大家详细介绍c#配置文件中自定义块节点的方法,文中有详细的代码示例供大家参考,具有一定的参考价值,需要的朋友可以参考下

在.netcore中我们非常方便获取配置文件节点参数,但是在非.netcore下一般 我们是使用中方法。

  <appSettings>
         <add key="BranchCode" value="FS"/>
  </appSettings>

读取方式也非常简单直接

   private string _defaultBranchCode = ConfigurationManager.AppSettings["BranchCode"].ToString();//运营中心

但是如果有很多参数,这样写感觉不够美观,以及容易遗漏。能否自定义一个块节点呢? 答案是肯定了。

就这样

  <pdd>
    <!--基础域名-->
    <add key="base_uri" value="xxxxxx"/>
    <!--测试环境-->
    <!--拼多多开放平台分配给服务商应用的唯一标示-->
    <add key="target_client_id" value="xxxxxxx"/>
    <!-- 调用拼多多开放平台 client_id-->
    <add key="client_id" value="xxxxxxx"/>
    <!--调用拼多多开放平台 秘钥-->
    <add key="client_secret" value="xxxxxxxxf"/>
  </pdd>
 <configSections>
    <section name="pdd" type="System.Configuration.NameValueSectionHandler"/>
   </configSections>    

对应读取

  public class pddConfig : IPddConfig
    {
        private string _base_uri;
        private string _target_client_id;
        private string _client_id;
        private string _client_secret;
        public pddConfig()
        {
            try
            {
                var pddConfig = ConfigurationManager.GetSection("pdd") as NameValueCollection;
                _base_uri = pddConfig["base_uri"];
                _target_client_id = pddConfig["target_client_id"];
                _client_id = pddConfig["client_id"];
                _client_secret = pddConfig["client_secret"];
            }
            catch (Exception ex)
            {
                throw new Exception("PDD配置错误, 请检查配置文件", ex);
            }
        }
        public string base_uri { get { return _base_uri; } }
        public string target_client_id { get { return _target_client_id; } }
        public string client_id { get { return _client_id; } }
        public string client_secret { get { return _client_secret; } }
    }
     public interface IPddConfig
    {
        string base_uri { get; }
        string target_client_id { get; }
        string client_id { get; }
        string client_secret { get; }
    }

调用 。这里使用了注入,所以可以通过构造函数获取

  builder.RegisterType<pddConfig>().As<IPddConfig>().InstancePerRequest();
  builder.RegisterType<PddService>().As<IPddService>().InstancePerRequest();
    public interface IPddService
    {
    }
    public class PddService : IPddService
    {
        public static string base_uri;
        public static string target_client_id;
        public static string client_id;
        public static string client_secret;
        public readonly IPddConfig _pddConfig;
       public PddService(IPddConfig PddConfig)
        {
            _pddConfig = PddConfig;
            GetConfig();
        }
        public void GetConfig()
        {
            base_uri = _pddConfig.base_uri;
            target_client_id = _pddConfig.target_client_id;
            client_id = _pddConfig.client_id;
            client_secret = _pddConfig.client_secret;
        }
    }

有关System.Configuration.NameValueSectionHandler 理解 gpt平台回答

System.Configuration.NameValueSectionHandler 是 .NET Framework 中的一个类,用于解析配置文件中的 Name-Value(键值对)形式的节(section)。

在应用程序或组件的配置文件(通常是 app.config 或 web.config)中,可以定义自定义的配置节来存储特定的设置。NameValueSectionHandler 可以帮助解析这样的配置节,使其信息可供应用程序使用。

NameValueSectionHandler 遵循配置节处理程序(Section Handler)的标准规范,它提供了解析配置节并返回键值对的功能,其中键和值都是字符串类型。通过使用 NameValueSectionHandler,可以方便地读取和解析配置文件中的特定配置节,并将其作为键值对的集合在应用程序中使用。

要使用 NameValueSectionHandler,需要在配置文件中定义一个自定义节,并指定 type 属性为 System.Configuration.NameValueSectionHandler。例如,在 app.config 文件中定义如下的配置:

<configuration>
  <configSections>
    <section name="MyCustomSection" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <MyCustomSection>
    <add key="Key1" value="Value1" />
    <add key="Key2" value="Value2" />
  </MyCustomSection>
</configuration>

然后,可以通过以下方式在代码中读取和解析配置节:

NameValueCollection mySection = ConfigurationManager.GetSection("MyCustomSection") as NameValueCollection;
string value1 = mySection["Key1"];
string value2 = mySection["Key2"];

上述代码通过 ConfigurationManager.GetSection 方法获取指定名称的配置节,并将其转换为 NameValueCollection 对象。然后,通过键(Key)来获取相应的值(Value)。

需要注意的是,System.Configuration.NameValueSectionHandler 在 .NET Framework 4.0 及更高版本中已经被废弃,推荐使用更现代化的配置方式,例如使用自定义配置节和自定义配置节处理程序(Section Handler)来替代。

以上就是c#配置文件中自定义块节点的方法的详细内容,更多关于c#配置自定义块节点的资料请关注脚本之家其它相关文章!

相关文章

  • C#常用多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列)

    C#常用多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列)

    这篇文章主要介绍了C#常用多线程(线程同步,事件触发,信号量,互斥锁,共享内存,消息队列),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • C# paddlerocrsharp识别身份证号的实现示例

    C# paddlerocrsharp识别身份证号的实现示例

    paddlerocrsharp可以进行图片识别,本文主要介绍了C# paddlerocrsharp识别身份证号的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • C#利用itext实现PDF页面处理与切分

    C#利用itext实现PDF页面处理与切分

    这篇文章主要介绍了如何在C#中使用itext做一个pdf的页面大小一致性处理,然后再根据数据切分出需要的pdf,感兴趣的小伙伴可以了解一下
    2022-04-04
  • C#使用throw和throw ex抛出异常的区别介绍

    C#使用throw和throw ex抛出异常的区别介绍

    这篇文章介绍了C#使用throw和throw ex抛出异常的区别,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C#虚方法的声明和使用实例教程

    C#虚方法的声明和使用实例教程

    这篇文章主要介绍了C#虚方法的声明和使用实例教程,对于初学者理解C#的虚方法有一定的帮助,需要的朋友可以参考下
    2014-07-07
  • 详解C# List<T>的Contains,Exists,Any,Where性能对比

    详解C# List<T>的Contains,Exists,Any,Where性能对比

    这篇文章主要介绍了详解C# List<T>的Contains,Exists,Any,Where性能对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 浅析WPF中Binding的数据校验和类型转换

    浅析WPF中Binding的数据校验和类型转换

    在WPF开发中,Binding实现了数据在Source和Target之间的传递和流通,那在WPF开发中,如何实现数据的校验和类型转换呢,下面就跟随小编一起学习一下吧
    2024-03-03
  • C#画笔Pen画虚线的方法

    C#画笔Pen画虚线的方法

    这篇文章主要介绍了C#画笔Pen画虚线的方法,涉及C#画笔Pen属性的相关设置技巧,需要的朋友可以参考下
    2015-06-06
  • C#实现DataList里面嵌套DataList的折叠菜单

    C#实现DataList里面嵌套DataList的折叠菜单

    这篇文章主要介绍了C#实现DataList里面嵌套DataList的折叠菜单,以实例形式详细分析了DataList嵌套实现折叠菜单所涉及的JavaScript、HTML与C#相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • C#窗体布局方式详解

    C#窗体布局方式详解

    这篇文章主要介绍了C#窗体布局方式详解的相关资料,需要的朋友可以参考下
    2016-09-09

最新评论