複数のフォールスルー状況でswitchステートメントのコンテンツを基本的に保存するために使用するのに適したコレクション/コンテナーは何ですか?より正確な方法は、「多くのキーと1つの値」のルックアップに適したC#ソリューションは何でしょうか。System.Collections名前空間とそれに関連する名前空間を確認しましたが、many-keys-one-valueに特に役立つものは見つかりませんでした。
最近、手動で作成するときに発生するエラーを回避するために、Webアプリケーションに必要なXMLファイルを作成して検証するための小さなコンソールプログラムを自分で作成しました。しかし、初期バージョンでは、わずかに変更可能ないくつかの要素をハードコーディングしました。具体的には、検証用のいくつかの辞書と、大量のフォールスルーオプションを備えた1つの大きなswitchステートメントです。これは今後数か月間は機能しますが、最終的にこれらのハードコードされた要素を更新する必要がある場合があります。これには、現在ソースファイルの編集が必要です。これを回避するために、辞書とswitchステートメントの情報をXMLファイルに保存することにしました(最終的には、ひどく再帰的な傾向で、それらを構築して検証するプログラムを作成するようになりました。私のためのXMLファイル)。さて、これをファイルに保存する際に、データを取得するときに、辞書のようにswitchステートメントを単純に再構築することはできません。したがって、switchステートメントの効果をシミュレートする必要があります。つまり、基本的に、同じ「値」を参照するには複数の「キー」が必要です。
switchステートメントのスニペットの例。このメソッドは、主に値を記憶しようとする人間のメモリスペースを節約するために、特別な値の入力を対応するIDに変換します。基本的に図のように、すべてが単一の値を出力するいくつかのキーをコンテナーに格納したいと思います。
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;
}