Что такое хорошая коллекция / контейнер, который можно использовать для хранения содержимого оператора switch в нескольких аварийных ситуациях? Я думаю, более точный способ, что такое хорошее решение C # для поиска "много ключей одно значение"? Я проверил пространство имен System.Collections и связанные с ним пространства имен, но не нашел ничего, что особенно ограничивало бы многие ключи-одно-значение.
Недавно я написал небольшую консольную программу для создания и проверки файлов XML, необходимых для моего веб-приложения, чтобы избежать ошибок, возникающих при его написании вручную. Но для первоначальной версии я жестко закодировал несколько элементов, которые немного изменчивы - в частности, несколько словарей для проверки и один большой оператор-переключатель, который имеет огромный набор опций. Хотя это будет работать в течение нескольких месяцев, возможно, в конечном итоге потребуется обновить эти жестко запрограммированные элементы, что в настоящее время потребует редактирования исходного файла. Чтобы избежать этого, я решил, что я буду хранить информацию о словарях и операторах переключения в файле XML (который в конечном итоге превратился в ужасно рекурсивную тенденцию в создание программы для построения и проверки этих XML файлы для меня). Теперь, сохраняя это в файле, когда я получаю данные, я не могу просто перестроить оператор switch так, как я могу использовать словари. Поэтому мне просто нужно смоделировать эффект оператора switch, что в основном означает, что мне нужно несколько «ключей» для ссылки на одно и то же «значение».
Пример фрагмента из оператора switch. Этот метод преобразует входные данные специальных значений в соответствующий идентификатор, в основном для экономии места в памяти человека, пытаясь запомнить значения. Как показано на рисунке, я бы хотел, чтобы в контейнере хранились несколько ключей, каждый из которых выдает одно значение.
private static string DiscernRegistrationId(string str)
{
string retVal = str;
switch (str.ToLowerKey()) //shortcut extension for str.Replace(" ","").Replace(".","").ToLowerInvariant()
{
case "computerpackage":
case "comppackage":
case "cpackage":
case "computerpkg":
case "comppkg":
case "cpkg":
retVal = "0x0100C73692D109C741A1B8846141B47519C8";
break;
case "mobilepackage":
case "mobpackage":
case "mpackage":
case "mobilepkg":
case "mobpkg":
case "mpkg":
retVal = "0x010081F753F0A4A5412CB6A8E9F8CD193F58";
break;
//More cases follow
}
return retVal;
}