La respuesta aceptada es un uso indebido del ArgumentException
lanzado por el constructor. Realmente no está utilizando las instancias RegionInfo
o ArgumentException
, lo que hace que el propósito del código sea muy poco claro.
En su lugar, obtener una lista de todas las culturas específicas, a continuación, buscar a través de las regiones de esas culturas para encontrar una coincidencia en su ISO 3166 alfa-2 Código:
bool IsCountryCodeValid(string countryCode)
{
return CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Select(culture => new RegionInfo(culture.LCID))
.Any(region => region.TwoLetterISORegionName == countryCode);
}
o específicamente, para su problema:
bool IsValidGermanCountryCode(string countryCode)
{
return CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Where(culture => culture.TwoLetterISOLanguageName == "de")
.Select(culture => new RegionInfo(culture.LCID))
.Any(region => region.TwoLetterISORegionName == countryCode);
}
Resulta que el seguro de salud alemán utiliza un sistema diferente de nombres de países. Los tamaños de los códigos de país varían de 1-3 caracteres. ¡Gracias por la ayuda! - Teja 0 segundos atrás –
Wow ... eso es realmente extraño. Si solo fueran tres letras, habría supuesto que era ISO 3166-1 Alpha 3 que usa tres letras para el código de país (DEU para alemán). – Ostemar
Esto es extraño; Los códigos de país ISO 3166 son mayúsculas. – rds