C# 包命名空间

标签 c# api namespaces using

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

非常感谢。

最佳答案

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

您可以考虑使用类似 Swagger 的工具它充当跨平台自动记录 api 工具。从 .net 的角度来看,有两个流行的库 NSwagSwashbuckle这有助于您入门。 NSwag 还包括通过检查 swagger.json 来创建客户端类的工具。文件类似于旧的 WSDL 定义。

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

如果您仅在内部使用此 api,则另一个可能更清晰的选项是在单独的类库中重现您希望通过 api 输出的所有类。然后 api 负责在现有命名空间/类和新命名空间/类之间进行映射。类似工具 Automapper可以在这方面提供很多帮助。它还有一个额外的优势,即您可以自定义映射,以便 api 只发出所需的数据,而不会发出所有无关的数据。

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

关于C# 包命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52054282/

相关文章:

c# - 根据一年中的时间使用适当的本地 DST 感知时区(例如 PST 或 PDT)格式化本地 DateTime

c# - 在 N 层 WCF MVC 应用程序中实现对象更改跟踪

c# - 将控件从一个选项卡页移动到另一个选项卡页

c# - 为什么允许我修改对象初始值设定项只读的属性?

node.js - Angular2 API 调用不返回任何内容

api - YouTube API v3.0 : How do you determine if a video is 'pay-per-view' ?

javascript - 无法使用 Asp.Net 查看 Google map ,错误为 :InvalidKeyOrUnauthorizedURLmapError

PHP遍历dbpedia xml

module - typescript 中的命名空间和模块混淆?

c++ - 在 namespace 中搜索名称时是否有任何顺序?