0

我正在创建一个支持多语言操作系统的应用程序。在应用程序的一个地方,我正在使用以下代码行。

Type t = typeof(System.Windows.Forms.NotifyIcon);
BindingFlags hidden = BindingFlags.NonPublic | BindingFlags.Instance;
t.GetField("text", hidden).SetValue(notifyIcon, notificationToolTip);

它会在不同的语言操作系统上顺利运行,还是我必须更改不同语言的必填字段。例如,对于法语操作系统,我必须进行以下更改。

t.GetField("texte",hidden),SetValue(notifyIcon,notificationToopTip);
4

1 回答 1

6

不,成员的名称不依赖于操作系统的语言设置。当您声明这样的类时:

public class Foo
{
    public string Name { get; set; }
}

...这不像编译器会自动将其翻译成Nom法语等。

另一方面,非公共成员的名称可以在库的不同版本之间更改 - 它们是非公共的全部意义在于您不打算使用它们,这意味着库作者完全可以自由稍后更改它们。是您的代码脆弱的方面 - 而不是国际化方面。

于 2013-07-15T08:07:29.253 回答