首页 / C#开发 / 正文

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

1791 1 发布于: 2019-06-27 读完约需5分钟

问题描述

在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应用程序编程开发中如何判断某个进程正在运行?

下一篇: C#/.NET应用程序编程开发中如何启动一个可执行的应用程序?

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

分享扩散:

发表评论

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