【问题标题】:Marking an unowned type as deprecated or obsolete将无主类型标记为已弃用或过时
【发布时间】:2016-01-22 19:07:49
【问题描述】:

我想创建TimeoutException 的自定义版本(我只会重写构造函数以添加更多信息)并且我想防止/阻止将来创建 @ (调用构造函数) 987654322@ 用于特定模块。是否可以将TimeoutException 的构造函数标记为已弃用/过时这样做?

Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsTrue(System.Boolean), 也是如此 我想弃用/废弃此方法(仅采用仅采用 Boolean 的实现,我不想触及采用 (Boolean, String) 或 @987654327 的实现@

我知道有[Obsolete] [Deprecate] 可以做到这一点,但是,由于这些方法没有在项目中声明/实现,我不知道如何添加它们。

【问题讨论】:

  • 您的工程师非常关注是否可以,以至于他们从未停止思考是否应该。
  • 这听起来更像是一个带有自定义规则的代码样式工具的工作。
  • 您应该能够使用 FxCop 并创建一个自定义规则来查找对您不想使用的构造函数的调用。
  • 不要学究气,你不能重写构造函数
  • 正在寻找多种选择,FxCop 就是其中之一。

标签: c# .net visual-studio code-analysis


【解决方案1】:

不,您不能将其他人二进制文件中的代码标记为已弃用或过时。

正如评论者所说,您可以编写自定义 FxCop 规则来捕捉这一点。更好的是,如果您使用的是最新的 Visual Studio,请编写自定义 Roslyn 分析器 (https://msdn.microsoft.com/en-us/magazine/dn879356.aspx)。

就我个人而言,我只希望团队拥有良好的代码审查流程,并在开发人员使用错误的东西时用尖棍戳他们。

【讨论】:

  • 我觉得即使有 voodoo 允许您将这些属性注入到运行时的无主类型中。在运行时拥有这些可能会破坏整个目的,因为它们可能无法触发运行时异常。
猜你喜欢
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
相关资源
最近更新 更多