Apa cara terbaik untuk membandingkan dua contoh CultureInfo?

Latar belakang:

Saya memiliki masalah dengan komponen, yang mengubah budaya thread saat ini menjadi "en-US" setiap kali setelah panggilan ke metode tertentu. Lebih jauh dalam proses saya yang mengarah pada masalah, mis. lapisan akses data tidak lagi berfungsi karena CultureInfo SqlParameter juga diubah menjadi "en-US", sehingga string tertentu tidak dapat diuraikan lagi ke DateTime SqlValue.

Solusi yang mungkin:

Jadi idenya adalah untuk membuat cadangan budaya thread saat ini sebelumnya dan memulihkannya setelah panggilan ke metode spesifik yang mengubah budaya thread saat ini. Saat memulihkan budaya, pertama-tama saya memeriksa budayanya apakah sudah berubah sama sekali.

Masalah/Pertanyaan:

Saya dapat membandingkan CultureInfo.Name yang dicadangkan dengan Thread.CurrentThread.CurrentCulture.Name tetapi saya juga dapat menggunakan metode .Equals() dari instance CultureInfo. Manakah cara yang lebih baik untuk membandingkan dua contoh CultureInfo? Apakah mungkin ada solusi ketiga/lebih baik?


person Kr15    schedule 25.06.2014    source sumber


Jawaban (1)


Anda harus menggunakan (karena kelebihan beban untuk membandingkan instance CultureInfo)

bool result2 = cultureInfo1.Equals(cultureInfo2); 

Seperti yang ditunjukkan di blog ini: https://web.archive.org/web/20180911110507/http://www.toolheaven.net/post/2010/07/02/Beware-when-comparing-CultureInfo-instances.aspx

person Rico Suter    schedule 25.06.2014
comment
Ya, .Equals() kelebihan beban dan saya menguji dua contoh misalnya. CultureInfo(de-DE), di mana saya mengubah properti salah satu dari dua objek dan kemudian memanggil Equals() -› juga mengembalikan nilai true - ok. Saya hanya ingin memastikan :-) Saya akan menetapkan jawaban Anda sebagai diterima. Tapi menurut saya untuk kasus penggunaan saya, membandingkan properti .Name saja sudah cukup. Mungkin Anda memiliki kekhawatiran dengan pendekatan itu? :-) Terima kasih. - person Kr15; 27.06.2014
comment
Lihat referencesource.microsoft.com/#mscorlib/system/globalization/ di mana Anda dapat melihat bagaimana Microsoft menerapkan hal yang sama. Ini membandingkan nama dan membandingkan info - person Rico Suter; 28.06.2014
comment
Sekadar informasi untuk orang yang mengalami masalah serupa: Properti CultureInfo.DateTimeFormat tidak dicentang di CultureInfo.Equals()! Jadi itu tidak membantu saya dengan masalah khusus saya karena properti DateTimeFormat yang diubah menyebabkan kesalahan konversi string menjadi datetime di DAL saya. - person Kr15; 09.07.2014