如果我将方法标记为Obsolete [“...”,true],那么返回值应该是多少?任意值?

时间:2017-11-02 21:49:18

标签: c# .net deprecated obsolete

我有一个过时的方法(事实上完全不受支持),因为基础概念正在被删除。所以,该方法不能有任何实现,我做了throw new NotSupportedException()。是否有理由使error属性的Obsolete参数导致编译错误?或者,如果我要这样做,我应该只返回一个任意值(因为该方法永远不会运行)?有人可以向我解释或链接到最佳实践的文档吗?

1 个答案:

答案 0 :(得分:2)

您不应该将[Obsolete]方法的实现更改为始终抛出异常。

你正在击败这个属性的全部目的,你将标记正在运行的方法,这已经过时,这意味着你不再在你的API的下一个版本中认识到该方法将存在。

虽然方法被标记为过时,但其他开发人员有时间处理他们的代码并应对新的更改。而不只是让他们的代码被打破。

如果你要总是抛出异常,你最好完全删除它,或者具有相同的实现,但将其标记为[Obsolete]并在适当时将其完全删除。

from MSDN

  

Obsolete属性将程序实体标记为不再推荐使用的程序实体。标记为过时的实体的每次使用都将随后生成警告或错误

它是否说它总是抛出异常并且它不再起作用了?不。如果你的方法不再适用,你就做了一个重大的改变,所以你必须让它以某种方式工作并将其标记为过时,或者完全删除它。

另一个好处,

  

Obsolete属性可以在没有参数的情况下使用,但包括对项目过时的原因以及建议使用的内容的解释。