c#配置文件中自定义块节点的方法
在.netcore中我们非常方便获取配置文件节点参数,但是在非.netcore下一般 我们是使用中方法。
<appSettings> <add key="BranchCode" value="FS"/> </appSettings>
读取方式也非常简单直接
private string _defaultBranch编程客栈Code = ConfigurationManager.AppSettings["BranchCode"].ToString();//运营中心
但是如果有很多参数,这样写感觉不够美观,以及容易遗漏。能否自定义一个块节点呢? 答案是肯定了。
就这样
<pdd> <!--基础域名--> <add key="base_uri" value="xxxxaerODvsBKoxx"/> <!--测试环境--> <!--拼多多开放平台分配给服务商应用的唯一标示--> <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; } }
调用 。这里使用了注入,所以可以通过构造函数获取
buwww.devze.comilder.RegisterType<pddConfig>().As<IPddConfig>().InstancePerRequest(); builder.RegisterType<PddService>().As<IPddService>().InstancandroidePerRequest();
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.confijsg)中,可以定义自定义的配置节来存储特定的设置。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#配置自定义块节点的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论