考虑一个包含大量控制器和方法的Web API项目。所述API使用数据传输对象模式从客户端获取数据并返回结果。这些DTO对象是从api的角度来看的实现细节,因此它们被标记为internal
以避免外部代码能够看到或调用它们。如何避免在针对CA1811警告的dtos中的get
和set
属性上放置抑制属性?
现在我不得不取消每个属性的警告,具体取决于课程是否为"阅读" dto,a"写" dto或两者兼而有之。在这些情况下,属性需要存在,因为json序列化器依赖于它们。
我不想通过标记public
来打开课程,因为那时我会暴露只有api项目应该知道的东西,而静态工具将无法分辨如果没有使用某些类或字段,因为其他人可能从外部使用它们。
我还可以将DTO迁移到单独的项目并在那里禁用警告,但是我要么再次标记public
或者添加InternalsVisibleTo
以便api项目可以看到它们,因为this problem而再次否定了这些好处。
答案 0 :(得分:0)
你可以让内部人员保护内部"这将使它们可以访问在其他程序集中继承这些DTO(理论上)的类。或者只是通过指令或全局为项目禁用这些警告。