[C#] 如何将String类型转换成任意基本类型
2010-09-30 21:06:30 来源:WEB开发网DEMO:
在配置文件里自定义配置:
1. 在<configSections></configSections>节点内添加节点:
<section name="XuConfig" type="System.Configuration.NameValueSectionHandler" />
2. 写配置看起来会是这样的:
<configSections>
//..其它代码
<section name="XuConfig" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<XuConfig>
<add key="ID" value="123"/>
<add key="Name" value="YcoeXu"/>
<add key="Roles" value="Member,Admin"/>
</XuConfig>
写个类自动加载
using System;
using System.Reflection;
using System.Collections.Specialized;
using System.Configuration;
using YcoeXu.Common;
namespace YcoeXu.Test
{
public class XuConfig
{
private XuConfig() { }
private static XuConfig config = null;
private static XuConfig Instance
{
get
{
if (config == null)
{
config = new XuConfig();
Type type = typeof(XuConfig);
//从配置文件里读取XuConfig节点
NameValueCollection xuConfig = (NameValueCollection)ConfigurationManager.GetSection("XuConfig");
//根据Key匹配对应的属性
foreach (String key in xuConfig.AllKeys)
{
PropertyInfo pi = type.GetProperty(key);
if (pi == null || String.IsNullOrEmpty(xuConfig[key]))
continue;
//自动转换类型并注入值
pi.SetValue(config, xuConfig[key].Format(pi.PropertyType), null);
}
}
return config;
}
}
public int ID { set; get; }
public String Name { set; get; }
public Role[] Roles { set; get; }
public void Test()
{
Console.WriteLine(XuConfig.Instance.Name);
Console.WriteLine(XuConfig.Instance.ID);
foreach (Role r in XuConfig.Instance.Roles)
{
Console.WriteLine(r.ToString());
}
}
}
public enum Role
{
Guest,
Member,
Manager,
Admin
}
}
注意了,一定要添加一个引用:System.Configuration
这里对String进行了一些扩展,使它可以直接当成String对象的方法访问了,是不是很方便呢。hoho~~~
项目中的一点点心得,发现网上还没有人放出这种方法,这里就写出来给大家分享下,相信对大家以后进行类似的自动转换或赋值的功能实现会有很大的帮助
好啦,公司貌似又要转向PHP了,上年刚从java转到C#,明年又要转向其它语言了,hoho~~~
更多精彩
赞助商链接