C# 包命名空间

C# Bundle Namespaces

我编写了一个包含许多不同项目的 C# 解决方案。由于此解决方案充当后端,因此我想为其编写一个 API。问题是客户端必须添加相对大量的名称空间才能访问必要的接口和 类。 有没有办法将 "bundle" 个命名空间合并为一个命名空间(或至少更少的命名空间),这样客户端就不必添加那么多 using 指令,或者我是否必须完全重构我的后端?

非常感谢。

假设您的意思是创建一个 ASP.NET WebApi 应用程序,那么名称空间应该无关紧要。任何消费应用程序将接收数据作为 JSON 没有命名空间。

您可以考虑使用像 Swagger which acts as a cross platform auto-documenting api tool. From a .net point of view there are two popular libraries NSwag and Swashbuckle 这样的工具来帮助您入门。 NSwag 还包括用于通过检查 swagger.json 文件来创建客户端 classes 的工具,就像旧的 WSDL 定义一样。

只要您的 JSON 对象具有相同的 属性 名称,任何客户端都会很乐意将它们反序列化到自己的命名空间 classes。

如果您仅在内部使用此 api,另一个可能更简洁的选项是在一个单独的文件中重现您希望通过 api 输出的所有 classes class 图书馆。然后 api 负责现有 namespaces/classes 和新 namespaces/classes 之间的映射。 Automapper 之类的工具对此有很大帮助。它具有额外的优势,您可以自定义映射,以便 完全 需要的数据由 api 发出,而所有无关的数据都不会发出。

此 class 库随后可以作为项目引用、dll 或(如果设置正确的话最好)NuGet 包在应用程序之间共享。