4

Resources.Designer.csに小さな関数を追加しましたが、うまく機能しています。問題は、Resources.resxに何かを追加または削除すると、この関数が常に削除されることです。これをバイパスしますか?

ありがとうございました!


これは、インデクサーとして使用される非常に単純な方法です。

internal static string Keys(string key) 
{ 
   return ResourceManager.GetString(key, resourceCulture); 
} 

Properties.Resources を実行してから値を連結することはできないため、私はそれを行いました。拡張機能は機能する可能性がありますが、試してみたところ、すべて静的メソッドであり、インスタンス化したくないため、うまくいきました。

アイデア?

4

2 に答える 2

5

resx ファイルのコード部分は、PublicResXFileCodeGenerator (または、リソース ファイルの可視性の設定に応じて、InternalResXFileCodeGenerator) と呼ばれるツールによって自動生成されます。ファイルの上部に次のように書かれています。

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

本当にこれを回避する必要がある場合は、 (VS が resx コードを生成するために実行するツール) をサブクラス化し、 Visual Studio がリソース ファイルを更新するたびに実行できる独自のツールを実装する必要があります。PublicResXFileCodeGenerator

ツールをオーバーライドすると、部分クラスを生成できるようになり、カスタマイズしたコードをリソース ファイル クラスの別の部分クラスとして別の .cs ファイルに格納できます。

正直なところ、おそらくもっと簡単なアプローチがあります。実装しているカスタム コードは何ですか? それを拡張メソッドに変えることはできますか?もう少し詳細を教えていただけると、より良い方向に進むことができるかもしれません。

于 2010-05-31T20:04:10.390 に答える
0

現時点では確認できませんが、自動生成されたクラスが部分クラスの場合は、別の .cs ファイルに一致する部分クラスを作成し、それに修正を加えます

編集

resx のデザイナ クラスが部分的ではないことを確認したため (生成されたファイルとしてあるべきだと思われますか?)、おそらく拡張メソッドが最適です。

于 2010-05-31T22:18:30.120 に答える