反向弃用/已过时

时间:2013-07-05 11:33:29

标签: c#

我的代码中有一项功能,但可以从下一版本获得。是否有任何标签通知它未被使用,但将来可用。我只有一种方式,即[已过时]自定义消息。期待除此之外。谢谢。

4 个答案:

答案 0 :(得分:6)

如果在当前版本中不可用,请不要将其作为公共API的一部分。不要暴露图书馆消费者不应使用的东西。

即使它不是库,也不要添加您不需要的代码。这违反了YAGNI原则。仅在实际需要时添加代码。

答案 1 :(得分:3)

你可以创建一个从该方法抛出一条CustomError消息,说“这个方法不适用于当前版本。它是为了将来”这样的东西。

否则您可以将方法设为Obselete并在消息中指定原因。 [已废弃(“我已编写此方法以供将来使用。请勿在当前版本中使用它。”)]

答案 2 :(得分:2)

从您的问题判断,我假设您想要在有人试图调用此方法时生成编译器警告,并声明它尚未实现。

ObsoleteAttribute被硬编码到C#编译器中,作为应生成警告消息的内容。因此,如果不修改编译器本身,就无法将方法标记为“将来实现”。

来自C#规范:

  

属性Obsolete用于标记类型和类型的成员   不应再使用了。        如果程序使用使用Obsolete属性修饰的类型或成员,则编译器会发出警告或错误。   具体来说,如果没有错误参数,编译器会发出警告   提供,或者如果提供了错误参数并且具有该值   假。如果error参数是,编译器会发出错误   指定并且值为true。

我建议不要公开尚未实现的方法,因为使用它们没有任何意义。如果这是团队开发工作的一部分,在开发特定模块之前指定API合同,则应考虑抛出NotImplementedException或提供虚拟实现。

答案 3 :(得分:0)

由于Roslyn:代码分析器,现在有了一个真正的解决方案,从而使这个问题得以重现。

只需将this Nuget package添加到您的项目中,您就可以创建将由编译器选择的属性!

GitHub repo readme带有说明,而且非常简单。