我有一个帮助方法,它将空格放入枚举名称中,如下所示。
public static string GetListItemString(Enum listItem)
{
string result = string.Empty;
#region ELegalStatus
if (listItem is ELegalStatus)
{
switch ((ELegalStatus) listItem)
{
case ELegalStatus.PrivateLimited:
result = "Private Limited";
break;
case ELegalStatus.PublicLimited:
result = "Public Limited";
break;
}
}
#endregion
#region ERegion
if (listItem is ERegion)
{
switch ((ERegion) listItem)
{
case ERegion.EnglandandWales:
result = "England and Wales";
break;
case ERegion.NorthernIreland:
result = "Northern Ireland";
break;
case ERegion.Scotland:
result = "Scotland";
break;
}
}
#endregion
return result;
}
我正在创建一个将枚举转换为列表的方法,如下所示。
public static object EnumToList<T>()
{
Type enumType = typeof (T);
// Can't use type constraints on value types, so have to do check like this
if (enumType.BaseType != typeof (Enum))
{
throw new ArgumentException("T must be of type System.Enum");
}
Array enumValArray = Enum.GetValues(enumType);
foreach (var name in enumValArray)
{
var y = Enum.Parse(enumType, name.ToString().Trim(), true);
var x = ListHelper.GetListItemString(y);
}
return null;
}
在上面的方法中,当通用枚举的所有名称/值都被读入数组时,我想迭代它们中的每一个并调用方法'GetListItemString'来获得名称的正确间隔版本。 / p>
但由于'GetListItemString'方法只接受'Enum'类型,因此它不会编译。
我不知道如何在迭代枚举的名称/值时传递此方法的必需参数。
有人可以帮忙吗?
更新:我已经尝试过使用var x = ListHelper.GetListItemString((Enum)y);
但是当使用EnumToList()调用'EnumToList'方法时,x的值总是为空;
答案 0 :(得分:1)
您只需要从object
投射到Enum
,因为某些原因Parse
的返回类型为object
。
var x = ListHelper.GetListItemString((Enum) y);
您可能还想查看(并可能更改)我的Unconstrained Melody project,它为通用约束问题提供了解决方法。