我想标记一个方法/类...过时但仅在特定日期之后。例如,这个类将在6个月内过时,让其他开发人员有时间实现新架构。
C#中是否存在现有属性?或者我应该实现自己的?
所有项目都将警告视为错误,因此ObsoleteAttribute不回答此问题。
答案 0 :(得分:4)
除了将这些信息烘焙到代码中之外,您通常会发布开发路线图,其中包含将要发生的任何重大更改。弃用的功能不一定会破坏更改。
即使您为IDE编写了一种机制来使用这种"延迟弃用",其他开发人员也需要这个VS扩展才能使用它。
只需发布一份文件,说明将要弃用/破坏的内容,然后在时机成熟时使用该属性弃用它。
"将警告视为错误"只会在弃用时对您产生影响,但这意味着您要谨慎地从旧代码迁移到新代码。当然,如果您需要提供向后兼容性,您可能需要停止将警告视为错误(为了使代码使用已弃用的代码进行支持)或在弃用时禁止警告,但这可能会有点混乱
对延期弃用没有内置支持,而且我不了解任何第三方解决方案 - 所以现在你可以自己动手了。
答案 1 :(得分:2)
如果你用这样的方法开始你的方法怎么办?
void method()
{
if(System.Diagnostics.Debugger.IsAttached) // you want your application to work, but warn developers
{
string DeprecatedFrom = "20001231"; //example date: 31 dec 2000
if (string.Format("{0:yyyymmdd}",DateTime.Now).Equals(DeprecatedFrom)) throw new NotSupportedException("Don't use this method.");
}
}
原油,但有效:方法将在2000年12月31日(在示例中)到达时开始投掷。