我正在创建一个支持多语言操作系统的应用程序。 在应用程序的一个地方,我使用以下代码行。
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);
答案 0 :(得分:6)
不,成员的名称不依赖于操作系统的语言设置。当你声明一个这样的类时:
public class Foo
{
public string Name { get; set; }
}
...它不像编译器会自动将其翻译成法语等Nom
。
另一方面,非公共成员的名称可以在不同版本的库之间进行更改 - 它们的非公开性的全部意义在于您不打算使用它们,这意味着图书馆作者完全有权在以后更改它们。 那是你的代码方面很脆弱 - 而不是国际化方面。