3

2部構成の質問...主に文字列の翻訳のためにソリューションで使用されるいくつかのリソースファイル(.resx)があります。たとえば、Errors.resx、Validation.resx、およびEnums.resxです。

パート1: Enumsリソースファイルがない場合は、すべてのリソースファイルをUIレイヤーに配置し、おそらくそれ自体のアセンブリ('Company.App1.MVCApp.Resources'など)内に配置して、 Webアプリ(Company.App1.MVCApp)...リソースファイルをUIレイヤーに配置するのは正しいでしょうか?

パート2:Enums.resxファイルには、列挙型メンバーに関連付けられた記述文字列が含まれています(Description属性を使用)。UIおよびドメインサービスでは、おそらく翻訳時に記述文字列にアクセスする必要があります。これをコア/ドメインレイヤーのどこかに、Company.App1.Core.Resourcesのような場所に保存することを考えました...?または、適切なOnionアーキテクチャに固執するために、コアレイヤーで抽象化を作成してから、インフラストラクチャレイヤーのどこかにResourcemManagerを実装する必要があります。

4

1 に答える 1

3

パート 1 : 私が現在取り組んでいるアプリケーションでは、懸念 (Enums、Errors...) ごとに 1 つの resx ファイルではなく、プロジェクトごとに 1 つの resx ファイルがありますたとえば、エラー メッセージを例にとると、純粋な UI エラー メッセージは UI resx ファイルに、ドメイン エラー メッセージは Domain resx ファイルに、という具合です。IMO リソース ファイルは、ローカライズされた文字列が使用されるコードの最も近くに配置するのが最適です。UI プロジェクトにほとんどのローカリゼーション ファイルがあると、ローカリゼーションとアプリケーションのレンダリング方法が密接に結び付きます。これは、メイン UI 以外のコンテキストでローカリゼーションを再利用する場合に問題になる可能性があります。

パート 2System.Resources.ResourceManager : ドメイン層のローカライズされた enum メンバーにアクセスするだけでよい場合は、ローカライズされた文字列を検索するために派生または使用する特定のヘルパーをドメイン層に配置できます。Properties.Resources.[...]ただし、単なるaよりも複雑なすべてのローカリゼーションロジックを一元化し、必要に応じてソリューションのすべてのresxファイルを検索できる、独立したレイヤーにある種の汎用ローカリゼーションヘルパーを用意すると便利です。

于 2012-08-23T09:45:41.670 に答える