例として文字列を取る CultureInfo のコンストラクター(例: "en-us")を検討してください。
特定のカルチャ (アンマネージ コード開発では "ロケール" と呼ばれます) に関する情報を提供します。この情報には、カルチャの名前、書記体系、使用されるカレンダー、および日付と並べ替え文字列の書式設定が含まれます。
現実の世界で実際に使用されているものにかなり固有のものです (たとえば、国/言語のペアは理にかなっています)。独自の文化を作成することもできます。
その言語がその国で話されている言語ではない可能性があると指定しました。具体的に何に使うのか明確にしていただけますか? さらに情報がなければ、 CultureInfoに似たものを定義しようとしているようです。
または、2 つのプロパティ (Country と Language) を持つ単純なオブジェクトを定義することもできます。ここで、Country はISO 3166-2文字列で、Language はISO 639-1 文字列です。
ISO コードのリストを XML ファイルに保存し、従来の手法を使用して解析することができます。既に BCL にあるものを探していると指定したため、CultureInfo を提案しました。
列挙型の使用は、一般に、オープン セットのフレームワーク デザイン ガイドラインによって推奨されていません。
オープン セット (オペレーティング システムのバージョン、友達の名前など) に列挙型を使用しないでください。
次のように、一連の静的読み取り専用文字列を持つ2つの静的クラスを定義するハイブリッドアプローチを取ることができます
// ISO-3166-2 codes
public static Countries
{
public static readonly string France = "FR";
...
}
// CultureInfo style codes
public static Languages
{
public static readonly string BritishEnglish = "en-GB";
}
更新:これは映画専用であるというコメントに基づいて、それが制作された文化とコンテンツの文化に CultureInfo を引き続き使用できます。それを超えるものは、Microsoft がそれを OS の一部にすることに関与するには、おそらく政治的すぎるでしょう (これを参照してください)。したがって、独自に定義する必要があります。