这取决于您所说的“表示层的一部分”是什么意思。如果您的意思是实际实施,那么绝对不是。是的,结果是打开的 Word 文档,但这与应用程序的表示层无关。
- 实际的实现应该去到基础设施层,那里应该去处理数据库、文件和第三方应用程序的所有代码。
- 您可能对文档生成逻辑有不同的实现。例如,对于控制台应用程序,它应该只将文件写入文件夹,对于 Web 应用程序,将文件写入响应,然后由用户下载,等等。
- 由于实际逻辑是特定于应用程序的,它应该在应用程序层上注入,如果你没有它,表示层在这里也应该没问题。
- 我假设您还想确保始终为特定业务案例生成文档。然后你应该将注入的文档生成服务传递给你的业务层。在这种情况下,如果您想将业务逻辑移动到不同的应用程序,您不会忘记在需要时实现新的文档生成逻辑。
因此,您的代码应如下所示:
public class BusinessLayerService
{
private IDocumentGenerator _documentGenerator;
public BusinessLayerService(IDocumentGenerator documentGenerator)
{
_documentGenerator = documentGenerator;
}
public void DoBusinessCase1()
{
// Do work here
_documentGenerator.GenerateDocument();
}
}
如果您使用任何 IoC 容器,只需在应用程序启动时注册所需的实现(用于 Web、Windows、移动或控制台应用程序)。
希望能帮助到你!