【问题标题】:Multilingual application using resources TypeInitializationException使用资源的多语言应用程序 TypeInitializationException
【发布时间】:2012-12-08 21:16:15
【问题描述】:

我在 Properties/String/ (cs-CZ.resx;default.resx) 中有两个资源

我是这样设置的:

    internal static System.Resources.ResourceManager strings;

    public static void SetLanguage(string culture)
    {
        if (culture == "cs-CZ")
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("cs-CZ");
            strings = Properties.Strings.cs_CZ.ResourceManager;
        }
        else
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
            strings = Properties.Strings._default.ResourceManager;
        }
    }

在表单构造函数中:

    SetLanguage("cs-CZ");

然后

    public static string Translate(string name)
    {
        return strings.GetString(name);
    }

mainStrip.Text = Translate("mainStrip");

但是我得到了 TypeInitializationException。怎么了?

【问题讨论】:

  • 您可以发布异常详细信息吗?
  • 我想要,但它只显示。该 TypeInitializationException 发生在 SetLanguage 方法中。我试过把这个return Properties.Strings.cs_CZ.ResourceManager.GetString(name); 放到翻译方法中。并注释掉 setlanguage 方法。现在可以了。所以问题出在 SetLanguage 方法中。
  • 查看 InnerException 找出问题所在。

标签: c# winforms .net-3.5 multilingual typeinitializeexception


【解决方案1】:

TypeInitializationException 主要是使用私有静态构造函数引起的。调用SetLanguage 方法将调用此构造函数并抛出此异常。所以为此创建新类或在此方法之前调用构造函数。

外汇。这是一个很好的例子:http://www.dotnetperls.com/typeinitializationexception

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多