Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
/// <summary>
/// Преобразование элемента перечисления в строку
/// </summary>
private String GetEnumElementString(Object e, Type t)
{
string result = string.Empty;
if (t == typeof(AccessMode))
{
if ((AccessMode)e == AccessMode.CacheOnly)
{
result = LocalStrings.AccessMode_CacheOnly_RU;
}
else if ((AccessMode)e == AccessMode.ServerOnly)
{
result = LocalStrings.AccessMode_ServerOnly_RU;
}
else if ((AccessMode)e == AccessMode.ServerAndCache)
{
result = LocalStrings.AccessMode_ServerAndCache_RU;
}
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
}
}
else if (t == typeof(MapImageType))
{
if ((MapImageType)e == MapImageType.Map)
{
result = LocalStrings.MapImageType_Map_RU;
}
else if ((MapImageType)e == MapImageType.Satellite)
{
result = LocalStrings.MapImageType_Sattelite_RU;
}
else if ((MapImageType)e == MapImageType.Hybrid)
{
result = LocalStrings.MapImageType_Hybrid_RU;
}
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
}
}
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e));
}
return result;
}
Конвертация Enum в строку. Аффтар уникален, и это лишь одно из проявлений его уникальности.
Swith - для трусов, статические тулзы и Extension - для дураков. У нас для этого будут методы классов, между прочим класс, в который входит этот метод - UserControl.
Кстати, поля LocalStrings - не константы, а статика:
public static string AccessMode_CacheOnly_RU = "Только кэш"; ....
Получение списка значений Enum для помещения в ComboBox:
private List<String> GetEnumStrings(Type e)
{
List<string> oResult = new List<string>();
if (e == typeof(AccessMode))
{
oResult.Add(LocalStrings.AccessMode_Cach eOnly_RU);
oResult.Add(LocalStrings.AccessMode_Serv erOnly_RU);
oResult.Add(LocalStrings.AccessMode_Serv erAndCache_RU);
}
else if (e == typeof(MapImageType))
{ .... }
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e.ToString()));
}
Получение списка значений Enum для помещения в ComboBox:
private List<String> GetEnumStrings(Type e)
{
List<string> oResult = new List<string>();
if (e == typeof(AccessMode))
{
oResult.Add(LocalStrings.AccessMode_Cach eOnly_RU);
oResult.Add(LocalStrings.AccessMode_Serv erOnly_RU);
oResult.Add(LocalStrings.AccessMode_Serv erAndCache_RU);
}
else if (e == typeof(MapImageType))
{ .... }
else
{
throw new Exception(string.Format("Отсутствует конвертация перечисления {0} к списку строк.", e.ToString()));
}
return oResult;
}