2012-04-18 97 views
4

我有一個windows應用程序訪問類庫項目中的文件。C#中的強類型資源文件

public static class Global 
{ 
    private static ResourceManager ResourceManager { get; set; } 

    static Global() 
    { 
     ResourceManager = new ResourceManager("MyClassLibraryProject.Resource", Assembly.GetExecutingAssembly()); 
    } 

    private static string GetValue (string name) 
    { 
     return (ResourceManager.GetString(name, Options.CultureInfo)); 
    } 

    public static string ProductName 
    { 
     get 
     { 
      return (GetValue(MethodBase.GetCurrentMethod().Name.Replace("get_", ""))); 
     } 
    } 
} 
` 

我在此示例中手動創建了ProductName屬性。是否有更簡單的方法來訪問資源文件中每一行的強類型名稱。

回答

5

這可能做你要找的內容:http://msdn.microsoft.com/en-us/library/ccec7sz1.aspx

由於資源的屬性類型是在運行時確定的,你需要一個工具來分析資源文件預編譯的時間和產生想要的屬性。 Resgen.exe會執行此操作,但您也可以創建自定義的t4腳本或其他內容。

從文檔:

下面的命令讀取基於XML的輸入文件myResources.resx並寫了一個名爲myResources.resources二進制資源文件。它還生成一個名爲MyFile.cs的C#文件,其中包含名爲MyClass的類,其中包含與輸入文件中引用的資源相匹配的強類型屬性。 MyClass類包含在名爲Namespace1的名稱空間中。

RESGEN myResources.resx myResources.resources /str:C#,Namespace1,MyClass,MyFile.cs

+0

這是我discivered。 Visual Studio 2010在構建時已經使用工具'ResXFileCodeGenerator'生成了一個類文件。然而,類的可訪問性是「內部」的,如果我改變它,它會在構建時被替換。有沒有辦法自定義這種行爲,所以我可以指定一個公共訪問修飾符? – 2012-04-19 06:59:28

+1

找到它[這裏](http://stackoverflow.com/questions/4274311/visual-studio-resx-file-default-internal-to-public)。不能相信我錯過了這一點。 – 2012-04-19 07:25:58