c# 大家是如何处理根据字符串来获取枚举值的?

比如我有一个枚举,publicenumDatabaseType{UnDefined,MSSQL,MySql,Oracle,SQLite,}那么我根据和枚举相同字符串和数字... 比如我有一个枚举,
public enum DatabaseType
{
UnDefined,
MSSQL,
MySql,
Oracle,
SQLite,
}
那么我根据和枚举相同字符串和数字来获取相应的枚举类型的方法就是这样写的:
public static DatabaseType FormatDBType(string dataBaseType)
{
foreach (DatabaseType dbt in Enum.GetValues(typeof(DatabaseType)))
if (dbt.ToString().ToUpper() == dataBaseType.ToUpper()
|| dbt.ToString("d") == dataBaseType)
return dbt;

throw new Exception("异常发生!尚未为此数据库类型定义枚举:" + dataBaseType);
}

但是有多个枚举也就是每次都要写这样的一个方法,其实每个的写法都类似,从封装的角度上来说,这个可以怎么样请封装简化吗?
展开
 我来答
Jarhf
2011-03-28 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1014万
展开全部
DatabaseType d1 = (DatabaseType)Enum.Parse(typeof(DatabaseType), "MSSQL", true);
DatabaseType d2 = (DatabaseType)Enum.Parse(typeof(DatabaseType), "0", true);

结果 d1=DatabaseType.MSSQL;
d2=DatabaseType.UnDefined;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xujihui1985
2011-03-28
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
使用LINQ查询
public static DatabaseType FormatDBType(string dataBaseType)
{
var res = Enum.GetValues(typeof(DatabaseType)).where(p=>p==dataBaseType).FirstOrDefault
if(res.count()>0)
{
return dataBaseType;
}
else
{
throw new Exception("异常发生!尚未为此数据库类型定义枚举:" + dataBaseType);

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式