将本地方法标记为已弃用/过时?
在.NET中,您可以将某些方法标记为过时,以便在尝试使用不推荐使用的方法时向开发人员发出警报。将本地方法标记为已弃用/过时?
<Obsolete("Do not call this method.")> Private Sub FormerMethod()
事情是你只能在你控制的类内做到这一点。当您希望开发人员避免在.NET中或供应商本地提供的类中使用某些方法时,您会做什么?
例如,如果您希望开发人员选择DataTable
而不是Select
的自定义扩展方法,该怎么办?我讨厌必须定义一个DataTable
类的定制版本,如果只是反对Select
。这将使我们不得不警察是否使用定制桌子。
我知道有像(FxCop)这样的工具可以帮助执行编码标准;但是,我的问题是,如果没有第三方工具,这是否可以处理。
虽然你可能不喜欢答案,但我认为包装将是合适的选择。
对于第三方供应商的代码,包装应该是强制性的,只是为了产生单元测试的抽象级别。作为一个包装,你显然可以将方法标记为Obsolete
。
对于.NET对象,这有点棘手。显然,有人可以包括命名空间并去镇上;我不认为像你想要的那样,这个问题只有一个'仅用于代码'的解决方案,除了可能做一个集成测试来搜索你的解决方案,并在你不喜欢的特定方法被调用时失败。
我认为包装可能是一个很好的方法,因为我不知道.NET允许我做我想做的事情。谢谢! – Mario
如果要将.Net Framework类标记为不赞成使用,可以在每个人都使用的共享\ infrastructure类之一中重新定义它。
实施例:
namespace System.ComponentModel
{
[Obsolete("Please do not use BackgroundWorker. Use class XXXX instead.")]
public class BackgroundWorker
{
}
}
它可能通过扩展原始.Net框架类,然后覆盖该调用基的方法,但与Obsolete
属性装饰具体方法也做了具体的方法。
但是,您需要解析循环类定义(可能通过使用程序集引用别名)。
这似乎适用于废弃System类。 –
您是否执行代码审查? –
+1这也是一个很好的建议。 – Tejs