C#/.NET应用程序编程开发中如何实现使用泛型方法读取配置文件选项参数?

C#开发 作者: Rector 6 次阅读 · 读完约需 1 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在C#/.NET应用程序编程开发,经常会有读取配置文件(app.config,web.config)选项值的操作,比如有类似这样的配置文件:

<appSettings>
    <add key="DebugMode" value="true"/>
    <add key="Email.Host" value="smpt.gmail.com"/>
    <add key="Email.Port" value="993"/>
    <add key="Email.Ssl" value="true"/>
</appSettings>

在C#中,常规的读取配置文件选项的作法是:

var debugMode = Convert.ToBoolean(ConfigurationManager.AppSettings["DebugMode"]);
var emailHost = ConfigurationManager.AppSettings["Email.Host"];
var emailPort = Convert.ToInt32(ConfigurationManager.AppSettings["Email.Port"]);
var emailSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["Email.Ssl"]);

以上的方法在运行结果上是可以的,但不够灵活,每个选项都需要手动读取并且转换成对应的数据类型。

那么,有没有一种方法,可以返回泛型的数据类型,而不需要每次都手动去转换呢?

方案一

使用泛型方法,以配置选项的key作为方法的参数传入,然后使用Convert.ChangeType()动态转换数据类型,如下:

static void Main()
{
    var debugMode = ConfigSetting<bool>("DebugMode");
    var emailHost = ConfigSetting<string>("Email.Host");
    var emailPort = ConfigSetting<int>("Email.Port");
    var emailSsl = ConfigSetting<bool>("Email.Ssl");

    Console.WriteLine($"debugMode:{debugMode}");
    Console.WriteLine($"emailHost:{emailHost}");
    Console.WriteLine($"emailPort:{emailPort}");
    Console.WriteLine($"emailSsl:{emailSsl}");

    Console.ReadLine();
}

private static T ConfigSetting<T>(string settingKey)
{
    return (T)Convert.ChangeType(ConfigurationManager.AppSettings[settingKey], typeof(T));
}

输出结果:

debugMode:True
emailHost:smpt.gmail.com
emailPort:993
emailSsl:True

温馨提示:本文标注有(完整示例)的示例代码可以直接粘贴在try.dot.net中运行。

阅读了该文章的人还浏览了...

本文永久链接码友网 » C#/.NET应用程序编程开发中如何实现使用泛型方法读取配置文件选项参数?

发布于: 2019-06-27 14:47:16
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册