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

Creating a .NET Standard library that uses other MVC libraries

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

我将如何着手在我的 .NET Standard 库中实现 FileContentResult 以便它在 Core 或 Framework 应用程序中工作?

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

那么,使用您的图书馆的任何人都将决定如何处理它 Stream。在 ASP.NET 核心应用程序的情况下,您可以 return 它作为 FileStreamResult。在另一种情况下,您可能会将其写入文件系统,或将其添加为电子邮件的附件等。将其绑定到一个狭窄的场景,例如 returning 文件作为来自 Web 应用程序的响应限制了可用性你的图书馆。

总而言之,您问题的答案基本上是您一开始就不需要这样做。让你的库专注于它实际负责的事情,你不需要这些类型的依赖。

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

在这种情况下使用抽象而不是具体类型。您还可以 return a Stream 或定义您自己的抽象。