如何处理" CA1811:避免未被调用的私人代码"与DTO模式?

时间:2015-03-27 21:55:06

标签: asp.net-web-api visibility code-analysis dto unused-variables

考虑一个包含大量控制器和方法的Web API项目。所述API使用数据传输对象模式从客户端获取数据并返回结果。这些DTO对象是从api的角度来看的实现细节,因此它们被标记为internal以避免外部代码能够看到或调用它们。如何避免在针对CA1811警告的dtos中的getset属性上放置抑制属性?

现在我不得不取消每个属性的警告,具体取决于课程是否为"阅读" dto,a"写" dto或两者兼而有之。在这些情况下,属性需要存在,因为json序列化器依赖于它们。

我不想通过标记public来打开课程,因为那时我会暴露只有api项目应该知道的东西,而静态工具将无法分辨如果没有使用某些类或字段,因为其他人可能从外部使用它们。

我还可以将DTO迁移到单独的项目并在那里禁用警告,但是我要么再次标记public或者添加InternalsVisibleTo以便api项目可以看到它们,因为this problem而再次否定了这些好处。

1 个答案:

答案 0 :(得分:0)

你可以让内部人员保护内部"这将使它们可以访问在其他程序集中继承这些DTO(理论上)的类。或者只是通过指令或全局为项目禁用这些警告。