4

.resxファイルを使用して、一般的な文字列参照をビジネスレイヤークラスライブラリに格納することをお勧めしますか?私は通常、これらがプレゼンテーション層で使用されているのを見たことがあります。

4

4 に答える 4

3

ソリューションに個別のプロジェクトを含めるという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ファイルを保存できるからです。

于 2012-09-13T16:09:37.617 に答える
2

ユーザーに表示される文字列をプレゼンテーション層に移動することをお勧めしますが、ビジネス層でいくつかのメッセージを作成する必要があることも珍しくありません。メッセージを複数の言語/文化に翻訳することを計画している場合は、それらをresxファイルに入れるのが適切です。

于 2012-09-13T16:05:23.643 に答える
2

ユーザー向けの文字列をどのレイヤーのresxファイルに入れても問題はありません。

つまり、ビジネスロジックに、CreateGreatingMail(User user, CultureInfo language)ユーザー向けのローカライズ可能な文字列が複数あるようなものがある場合は、どこかに配置する必要があり、resxが最適な場所です。

UI文字列を共有するために、共有ビジネスレイヤーにマージするのではなく、UI文字列専用の明示的なUIレイヤーアセンブリを使用できます。

于 2012-09-13T16:06:28.457 に答える
0

はいExaclty.resx fileはに配置されPresentation Layerます。

しかし、あなたは設定することができますconstant

const string toto = "test";
于 2012-09-13T15:55:45.300 に答える