分享 类 vs. 招摇生成 类

Share classes vs. swagger generated classes

我有一个 asp.net/Blazor 包含三个项目的 VS 解决方案,

  1. 共享
  2. asp.net 核心 API
  3. Blazor webassembly。

我在 Shared 项目和其他两个项目中创建了一堆 类,引用了 Shared 项目。到目前为止一切都很好。

然后我使用 Swagger UI 为我生成了存根,这样我就可以与远程 API 进行交互。 Swagger UI 创造了 Service.csContract.cs 这很棒。问题是 Contract.cs 重新定义了我在它自己的命名空间下的共享项目中声明的 类。现在我不知道该使用哪个和导入哪个。如果我使用自己的 Shared 类,那么我将无法在 Service.cs 中使用来自 swagger 的 API,而无需强制转换。如果我修改 Contract.cs,那么下次我 运行 Swagger UI.

时,我的所有更改都将丢失

这也导致有两个 DBContext - 1) 我定义的那个和 2) swagger 定义的那个。现在每次我想做点什么,我也必须在命令行上使用--context参数来指定使用哪个DBContext

问题是我如何使用自己的 类 并使用 swagger 来简化与远程 API 的通信?这里的最佳做法是什么?

当您想使用 Swagger(客户端)时,您不应引用共享项目。大摇大摆的 claases 就是你 get/want 然后。

但在 Blazor 中不需要 Swagger。在 Shared 中共享 DTO 类 的机会是 Blazor 的亮点之一。

如果您需要有关客户端样板文件方面的帮助,可以使用 refit. See this blog 等选项。