「プレゼンテーション層の一部」が何を意味するかによって異なります。実際の実装を意味する場合は、そうではありません。はい、結果は開かれた Word ドキュメントですが、これはアプリケーションのプレゼンテーション層とは関係ありません。
- 実際の実装は、データベース、ファイル、およびサード パーティ アプリケーションを処理するすべてのコードが必要なインフラストラクチャ レイヤーに移動する必要があります。
- ドキュメント生成ロジックの実装が異なる場合があります。たとえば、コンソール アプリケーションの場合はファイルをフォルダーに書き込むだけでよく、Web アプリケーションの場合はファイルを応答に書き込み、ユーザーがダウンロードできるようにする必要があります。
- 実際のロジックはアプリケーション固有であるため、アプリケーション層で注入する必要があります。プレゼンテーション層がない場合は、ここでも問題ありません。
- また、特定のビジネス ケースに対して常にドキュメントが生成されるようにしたいと考えていると思います。次に、挿入されたドキュメント生成サービスをビジネス レイヤーに渡す必要があります。この場合、ビジネス ロジックを別のアプリケーションに移動したい場合、必要に応じて新しいドキュメント生成ロジックを実装することを忘れないでください。
したがって、コードは次のようになります。
public class BusinessLayerService
{
private IDocumentGenerator _documentGenerator;
public BusinessLayerService(IDocumentGenerator documentGenerator)
{
_documentGenerator = documentGenerator;
}
public void DoBusinessCase1()
{
// Do work here
_documentGenerator.GenerateDocument();
}
}
IoC コンテナーを使用する場合は、必要な実装 (Web、ウィンドウ、モービル、またはコンソール アプリケーション用) をアプリケーションのスターアップに登録するだけです。
それが役に立てば幸い!