特定日期后过时了?

时间:2012-05-23 08:18:20

标签: c# deprecated custom-attributes obsolete

我想标记一个方法/类...过时但仅在特定日期之后。例如,这个类将在6个月内过时,让其他开发人员有时间实现新架构。

C#中是否存在现有属性?或者我应该实现自己的?

所有项目都将警告视为错误,因此ObsoleteAttribute不回答此问题。

2 个答案:

答案 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日(在示例中)到达时开始投掷。