3

このデータを xml から取得して、何千ものオブジェクト用に初期化します。

したがって、 にandプロパティMyObjectがある場合、それらは何であるべきで、コードと xml の両方でどのように表現する必要がありますか。CountryLanguage

Enumインコードの使用を考えています。

これを行うための最良の方法を見つけるために、他の人の意見を探しています。すべての言語と国は BCL に含まれているので、書く代わりに使用できますか?

またCountry、 とLanguageを組み合わせてはいけません。はLanguage、指定された で話されている言語を表すものではありませんCountry

コードと Xml の両方でこれを最適に実装する方法。

私はそれを次のようにすべきですか?:

<Language>English</Language>
4

4 に答える 4

8

例として文字列を取る 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 の一部にすることに関与するには、おそらく政治的すぎるでしょう (これを参照してください)。したがって、独自に定義する必要があります。

于 2009-12-28T18:11:54.120 に答える
2

ISO 639-2 (言語名の表現のためのコード) は、人間の言語のかなり完全なリストと、それらの言語に使用できる標準コードを提供します。

http://www.loc.gov/standards/iso639-2/php/code_list.php

同様に、ISO 3166-1 はすべての国に標準コードを提供します。

http://en.wikipedia.org/wiki/ISO_3166-1

于 2009-12-28T18:24:42.487 に答える
1

ビルド済みのシリアライゼーション ライブラリ (例:このチュートリアル) を使用して、xml から保存および取得します。また、列挙型の使用を避け、単純に文字列または CultureInfo のようなものを使用します。

于 2009-12-28T18:15:31.943 に答える
0

これは、http: //docs.oasis-open.org/dita/v1.1/OS/archspec/xmllang.htmlで説明されているように、要素の xml:lang 属性を使用できる場合に当てはまります。

示唆されているように、ロケールには「country-LANGUAGE」識別子を使用します。これは、デシリアライズ時に CultureInfo オブジェクトを作成するために使用できます。つまり、コードで CultureInfo オブジェクトを使用します。

于 2009-12-28T18:16:38.863 に答える