我正在构建一个扩展Enum.Parse概念的函数
所以我写了以下内容:
public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum
{
if (string.IsNullOrEmpty(value)) return defaultValue;
foreach (T item in Enum.GetValues(typeof(T)))
{
if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item;
}
return defaultValue;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个Error Constraint不能是特殊类System.Enum.
很公平,但是有一个解决方法允许Generic Enum,或者我将不得不模仿该Parse函数并将类型作为属性传递,这会迫使您的代码出现丑陋的拳击要求.
编辑以下所有建议都非常感谢,谢谢.
已经解决了(我已离开循环以保持不区分大小写 - 我在解析XML时使用它)
public static class EnumUtils
{
public static T ParseEnum<T>(string value, T defaultValue) where T : struct, IConvertible
{
if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");
if (string.IsNullOrEmpty(value)) return …Run Code Online (Sandbox Code Playgroud) 我在低级命名空间中有一个枚举.我想在一个"继承"低级枚举的中级命名空间中提供一个类或枚举.
namespace low
{
public enum base
{
x, y, z
}
}
namespace mid
{
public enum consume : low.base
{
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这是可能的,或者某种类可以代替枚举消耗,它将为枚举提供一层抽象,但仍然让该类的实例访问枚举.
思考?
编辑:我之前没有将其转换为类中的consts的原因之一是我必须使用的服务需要低级枚举.我得到了WSDL和XSD,它们将结构定义为枚举.该服务无法更改.