2013-07-15 128 views
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); 

回答

6

不,成員的名稱不依賴於操作系統的語言設置。當你聲明這樣的類:

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

...它不喜歡的編譯器會自動轉換到這一點在法國等

在另一方面,非公共成員的名字Nom不同版本的圖書館之間的變化 - 他們非公開的全部內容是你不打算使用它們,這意味着圖書館作者完全可以隨時更改它們。 那就是你的代碼很脆弱 - 而不是國際化方面。

+0

@ Jon Skeet我說的是不同的語言操作系統,就像用法語或其他語言安裝的Windows,而不是英文。 – g10

+0

@G10,Jon Skeet的回答也與此相關。 –

+1

@ g10:根本不重要。程序代碼仍然不會被翻譯。 (想想看:當你聲明一個領域,你真的希望有東西會自動翻譯它?) –

相關問題