如何在.NET 6 中使用“CM”区域?

问题描述 投票:0回答:2

我有一个 .NET 6 应用程序。我正在尝试运行此代码:

using System;
using System.Text;
using System.Globalization;
                    
public class Program
{
    public static void Main()
    {
        new RegionInfo("CM");
    }
}

我收到此错误:

未处理的异常。 System.ArgumentException:区域名称 CM 不应对应于中立文化;需要特定的文化名称。 (参数“名称”) 在 System.Globalization.RegionInfo..ctor(字符串名称) 在 Program.Main() 命令由信号 6 终止

这里是一把小提琴。

相同的代码在 .NET 4.7.2 中运行良好。另外,我在here检查了

"CM"
是喀麦隆的有效ISO 3166国家/地区代码。

那么,这种行为是 C# 错误吗?我有一个应用程序,用户可以在其中添加国家/地区。现在,当添加喀麦隆时,我的应用程序失败了。我该如何修复或绕过它?

这是一个很大的应用程序,所以我不能只是将其降级到.NET 4.7.2。

c# .net-6.0 iso culture region
2个回答
3
投票

错误消息并不是说 CM 不是有效的区域性名称 - 只是说它是中性区域性,而不是特定区域性。

显然您需要指定语言/区域组合,例如“fr-CM”代表法语(喀麦隆),“en-CM”代表英语(喀麦隆)。

老实说,我不知道为什么 .NET Framework 中的行为与 .NET 6 中不同,但上述内容似乎至少允许构造函数调用完成。当然,您需要检查对应用程序其余部分的影响。


0
投票

我发现我们在项目中使用的另一个选项是建立一个单独的国家/地区项目,其中包含有关每个国家/地区的硬编码信息。之后,任何其他需要此信息的项目都可以有对该国家项目的包引用。

通过这种方式,我们可以通过独立于 .NET 来获得灵活性

RegionInfo
。在我们国家的项目中,
"CM"
是有效的区域名称。我们不必附加
fr
,也不必附加
en

© www.soinside.com 2019 - 2024. All rights reserved.