创建使用其他MVC库的.NET Standard库

时间:2018-11-07 20:23:42

标签: asp.net-mvc asp.net-core-mvc .net-standard-2.0 filecontentresult

我正在尝试创建一个.NET Standard 2.0库,该库将由多个MVC应用程序使用,这些应用程序可能是.NET Framework或.NET Core。该特定库应该将数据导出为ex​​cel文件。为此,我需要使用FileContentResult(Core)的一部分Microsoft.AspNetCore.Mvc。我没有安装该库的Framework版本的选项。

我该如何在.NET Standard库中实现FileContentResult,以便使其在Core或Framework应用程序中均可工作?

2 个答案:

答案 0 :(得分:0)

您的图书馆不应使用FileContentResult之类的东西。单一责任原则规定,它仅应处理与其目的实际相关的功能,即根据某些数据集创建excel文件。然后,您可以将其作为Stream从库中返回。

那么,无论使用什么库,都将决定如何处理该Stream。对于ASP.NET Core应用程序,您可以将其返回为FileStreamResult。在另一种情况下,您可以将其写入文件系统,或将其添加为电子邮件的附件等。将其绑定到一个狭窄的情况下,例如从Web应用程序返回文件作为响应,将限制库的可用性。

总之,对于您的问题的回答基本上是您根本不需要这样做。让您的库专注于它真正负责的是什么,而您不需要这些类型的依赖项。

答案 1 :(得分:0)

我不明白为什么您需要使用FileContentResult。只需进行处理,然后在库中返回一个字节数组。在您的MVC应用程序中,调用此方法并创建一个FileContentResult

在这种情况下,请使用抽象代替具体类型。您还可以返回Stream或定义自己的抽象。