2012-04-18 9 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プロパティをcratedています。リソースファイルの各行の厳密に型指定された名前にアクセスする簡単な方法はありますか?

答えて

5

これは、あなたが探しているものを行う可能性があります:http://msdn.microsoft.com/en-us/library/ccec7sz1.aspx

リソースプロパティタイプが実行時に決定されているので、あなたが事前にコンパイル時のリソースファイルを分析し、希望のプロパティを生成するツールが必要になります。 Resgen.exeはこれを行いますが、カスタムt4スクリプトなどを作成することもできます。

ドキュメントから:

次のコマンドは、XMLベースの入力ファイルmyResources.resxを読み取り、myResources.resourcesという名前のバイナリリソースファイルを書き込みます。また、入力ファイルで参照されるリソースと一致する厳密に型指定されたプロパティを含むMyClassという名前のクラスでMyFile.csという名前のC#ファイルを生成します。 MyClassクラスはNamespace1という名前空間に含まれています。ここで

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

+0

は私がdisciveredものです。 Visual Studio 2010は、 'ResXFileCodeGenerator'ツールを使用して、ビルド時に既にクラスファイルを生成しています。ただし、クラスのアクセシビリティは 'internal'です。変更すると、ビルド時に置き換えられます。パブリックアクセス修飾子を指定できるようにこの動作をカスタマイズする方法はありますか? –

+1

見つかりました[ここ](http://stackoverflow.com/questions/4274311/visual-studio-resx-file-default-internal-to-public)。私はそれを逃したとは信じられません。 –

関連する問題