.resxファイルを使用して、一般的な文字列参照をビジネスレイヤークラスライブラリに格納することをお勧めしますか?私は通常、これらがプレゼンテーション層で使用されているのを見たことがあります。
4 に答える
ソリューションに個別のプロジェクトを含めるという1つのオプションがあります。このプロジェクトには、ソリューション全体のすべてのresxファイルが含まれています。次に、それをビジネスレイヤーへの参照として追加できます。リソースプロジェクトでは、.net ResourceManagerクラスのラッパーを記述して、キーのリソース値を返すことができます。次の行に何か:
public class ResourceService : IResourceService
{
public ResourceService() {}
public GetResourceValue(string resourceFileName, string resourceKey)
{
var resourceManager = new ResourceManager("Myresources", Assembly.Load("MyResourcesProjectName"));
return resourceManager.GetString(resourceKey);
}
}
次に、ビジネスレイヤーから次のように使用できます。
var resourceService = new ResourceService();
var resourceValue = resourceService.GetResourceValue("MyResources", "ResourceKeyName");
私はコードをテストする時間がありませんでした、私はその場で書きました、しかしそれはあなたに一般的な考えを与えるはずです。IMO、resxファイルを別のプロジェクトに配置しても問題はありません。それにアプローチする別の方法は、それらが使用される場所に.resxファイルを置くことです。個別のプロジェクトのアイデアの方が良いと思います。そうすれば、言語の種類ごとに個別のフォルダーを作成し、その中にロケール固有の.resxファイルを保存できるからです。
ユーザーに表示される文字列をプレゼンテーション層に移動することをお勧めしますが、ビジネス層でいくつかのメッセージを作成する必要があることも珍しくありません。メッセージを複数の言語/文化に翻訳することを計画している場合は、それらをresxファイルに入れるのが適切です。
ユーザー向けの文字列をどのレイヤーのresxファイルに入れても問題はありません。
つまり、ビジネスロジックに、CreateGreatingMail(User user, CultureInfo language)
ユーザー向けのローカライズ可能な文字列が複数あるようなものがある場合は、どこかに配置する必要があり、resxが最適な場所です。
UI文字列を共有するために、共有ビジネスレイヤーにマージするのではなく、UI文字列専用の明示的なUIレイヤーアセンブリを使用できます。
はいExaclty.resx file
はに配置されPresentation Layer
ます。
しかし、あなたは設定することができますconstant
const string toto = "test";