使用资源TypeInitializationException的多语言应用程序

时间:2012-12-08 21:16:15

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

我在Properties / String /中有两个Reources(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;
        }
    }

在Form构造函数中:

    SetLanguage("cs-CZ");

然后

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

mainStrip.Text = Translate("mainStrip");

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

1 个答案:

答案 0 :(得分:1)

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

FXP。这里有很好的例子:http://www.dotnetperls.com/typeinitializationexception