close
文章出處

首先為假設有一個應用程序CAStudy,接著右鍵添加一個資源文件Resource1.resx

Resource1.resx里面如下:

image

Main函數如下:

static void Main()
{
    ResourceManager resourceManager = new ResourceManager(
        "CAStudy.Resource1",
        Assembly.GetExecutingAssembly());

    Console.WriteLine("String1 : " + resourceManager.GetString("String1"));
    Console.WriteLine("String1 : " + Resource1.String1);
    Console.ReadLine();
}
 

使用的ResourceManager構造函數如下:

[SecuritySafeCritical]
public ResourceManager(string baseName, Assembly assembly);

在應用程序編譯的時候Resource1.resx就會被編譯成Resource1的一個類。所以如果你不知道baseName是什么,也可以這樣:

ResourceManager resourceManager = new ResourceManager(
                Resource1.ResourceManager.BaseName,
                Assembly.GetExecutingAssembly());

或者你查看IL代碼,可以發現如下:

clip_image002

 

運行結果如下:

clip_image002[5]

 

假設我們要支持 英語-美國(en-US) 的人來訪問的話:

clip_image002[7]

那么我們可以復制Resource1.resx ,從而生成Resource1.en-US.resx。

注意除了中間多出來了en-US之外,其他都相同,

當然,如果你需要支持中文-臺灣,那么可以生成Resource1.zh-TW.resx.

 

Resource1.en-US.resx內容如下:

clip_image004

 

可以看到,現在的是Hello。

使用的時候只需要修改

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

 

為什么修改 CurrentUICulture 就可以了呢?

// 摘要:
// 獲取或設置資源管理器使用的當前區域性以便在運行時查找區域性特定的資源。
public CultureInfo CurrentUICulture { get; set; }

 

完整的Main函數如下:

static void Main()
{
    ResourceManager resourceManager = new ResourceManager(
        Resource1.ResourceManager.BaseName,
        Assembly.GetExecutingAssembly());

    Console.WriteLine("String1 :" + resourceManager.GetString("String1"));
    Console.WriteLine("String1 :" + Resource1.String1);

    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
    Console.WriteLine("String1 :" + resourceManager.GetString("String1"));
    Console.WriteLine("String1 :" + Resource1.String1);

    Console.ReadLine();
}
 

運行結果如下:

clip_image002[9]


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()