2016-01-28 7 views
10

は明らかにが例外をスローする必要があります間違っていませんが、いなくなっes-CAと文化の情報を作成スローしません。無効のCultureInfoはもはやCultureNotFoundException

は、CultureNotFoundExceptionnew CultureInfo("es-CA")となっています。今は「未知のロケール」のesに戻っているようです。しかし、xy-ZZのようなことをやっても、それはむしろ奇妙ですか?

これはもはや例外をスローしないのはなぜですか?これは最近の.NETのバージョンで変更されましたか?

アップデート1

ドキュメントには、次のように言及している:、オペレーティングシステムはその文化をサポートしていない場合

、および名前は、補助の名前または交換の文化ではない場合このメソッドはCultureNotFoundException例外をスローします。

これをWindows 7でテストすると、CultureNotFoundExceptionがスローされますが、Windows 10では例外がスローされません。

+0

動作が変更されていないため、コンピュータに存在する必要があります(https://msdn.microsoft.com/en-us/library/ky2chs3h(v=vs.110).aspx)。 – BalinKingOfMoria

+0

@BalinKingOfMoria、私はそれが**例外をスローしないと言っています、それはすべきです。カルチャーやローカルは私のマシンには存在しません。 –

+0

私は知っていますが、ドキュメントがまだそのように動作していると伝えていることを伝えたいだけでした。 – BalinKingOfMoria

答えて

2

ここでコメントに基づいて回答を追加してください。

Windowsのデザインが変更されたため、名前がBCP-47と一致する場合、 "無効なカルチャ"はなくなりました。したがって、例外をスローする代わりに、.NET Framework/.NETコアは新しいカルチャを受け入れます。

あなたはフレームワークが文化を取得するためにOSに依存しているように、OSの もモデルに有効となる任意のBCP-47培養名を移動さthe GitHub discussionを参照し、引用、

以下のことができます OSがサポートしていません。たとえば、Windows 10は、OSでも、 カルチャの実際のデータを持っていなくても、正しく形成されたカルチャー名のいずれかをサポートしています。たとえば、 Windows 10に「xx-XXXX」のカルチャを作成しようとすると成功します。それを考慮して、 が文化の列挙を持っていることは意味を成さない。我々が戻すセットは、これが唯一の支援文化であることを意味するものではない。あなたの問題を見て、回避策は受け入れられる です。実際にはより良い方法が必要な場合は、 CultureInfo.TryGetCulture()と似ていますが、私が以前に言ったように、 はほとんどすべての文化が有効になります。

+0

こんにちは、私は失敗し始めた私のユニットテストについて1つ困っています。 ifは有効であると見なされる「not-a-valid-culture」を解析します。しかし、wikipedia(https://en.wikipedia.org/wiki/IETF_language_tag#Syntax_of_language_tags)が正しい場合、これはまだ無効な文化であるはずです。とにかく、返事をありがとう。私は私たちの文化のために私たち自身の検証をロールバックしなければならないことを学びました。 –

関連する問題