У меня есть вспомогательный метод, который помещает пробелы в имена перечислений, как показано ниже.Невозможно вызвать метод с общим типом перечисления как параметр
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», чтобы получить правильно разнесенную версию имя.
Но поскольку метод GetListItemString принимает только тип «Enum», он не компилируется.
Я не уверен, как передать требуемый параметр для этого метода, итерации по имени/значениям перечисления.
Не могли бы вы помочь?
Обновление: Я уже пробовал использовать var x = ListHelper.GetListItemString ((Enum) y);
Но значение x всегда пусто, когда метод EnumToList вызывается с помощью EnumToList();
Кастинг y в 'Enum' делает его скомпилированным, но 'GetListItemString' ничего не возвращает, если вы вызываете метод, подобный этому 'EnumToList();' –
kranthi
@kranthi: Ну, это должно вернуть * что-то *. Вы говорите, что возвращает пустую строку? Если это так, вы действительно должны начать отлаживать его ... вам гораздо легче сделать это, чем нам. Отлаживайте его по строкам - проверяйте значение 'y' заранее и т. Д. –
Я отлаживал его. Полученное значение отбрасывания 'y' до 'Enum' не рассматривается как тип 'ELegalStatus' методом GetListItemString и этот случай не выполняется, поэтому пустая строка. – kranthi