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);
}
但是有多个枚举也就是每次都要写这样的一个方法,其实每个的写法都类似,从封装的角度上来说,这个可以怎么样请封装简化吗? 展开
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);
}
但是有多个枚举也就是每次都要写这样的一个方法,其实每个的写法都类似,从封装的角度上来说,这个可以怎么样请封装简化吗? 展开
展开全部
DatabaseType d1 = (DatabaseType)Enum.Parse(typeof(DatabaseType), "MSSQL", true);
DatabaseType d2 = (DatabaseType)Enum.Parse(typeof(DatabaseType), "0", true);
结果 d1=DatabaseType.MSSQL;
d2=DatabaseType.UnDefined;
DatabaseType d2 = (DatabaseType)Enum.Parse(typeof(DatabaseType), "0", true);
结果 d1=DatabaseType.MSSQL;
d2=DatabaseType.UnDefined;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询