考虑一个包含大量控制器和方法的 Web API 项目。所述 API 使用数据传输对象模式从客户端获取数据并返回结果。从 api 的角度来看,这些 DTO 对象是一个实现细节,因此它们被标记为internal
避免外部代码能够看到或调用它们。对于 CA1811 警告,如何避免必须在 dto 中的属性get
和属性上放置抑制属性?set
现在,我必须根据类是“读取”dto、“写入”dto 还是两者兼而有之,抑制每个属性的警告。在这些情况下,属性需要存在,因为 json 序列化程序依赖于它们。
我不想通过标记它们来打开类,public
因为那样我就会暴露一些只有 api 项目应该知道的东西,并且静态工具将无法判断某些类或字段是否没有被使用,因为有人否则可能会从外部使用它们。
我还可以将 DTO 迁移到一个单独的项目并禁用那里的警告,但是我需要public
再次标记它们或添加一个InternalsVisibleTo
以便 api 项目可以看到它们,这又因为这个问题而否定了好处。