3

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

C# 中是否存在这样做的属性?还是我应该实施自己的?

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

4

2 回答 2

3

您通常不会将这些信息烘焙到代码中,而是发布开发路线图,其中包含将要发生的任何重大更改。已弃用的功能不一定是重大更改。

即使您为 IDE 编写一种机制来使用这种“延迟弃用”,其他开发人员也需要这个 VS 扩展才能使用它。

只需发布一个文档,说明将被弃用/破坏的内容,然后在时机成熟时使用属性弃用它。

“将警告视为错误”只会在弃用时影响您,但这意味着您在从旧代码迁移到新代码时保持警惕。当然,如果您需要提供向后兼容性,您要么需要停止将警告视为错误(以便让代码使用已弃用的代码作为支持),要么在弃用时抑制警告,但这可能会有点混乱.

没有对延迟弃用的内置支持,而且我不知道有任何第三方解决方案在野外 - 所以现在你只能靠自己了。

于 2012-05-23T08:27:58.230 回答
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.");
    }
}

Crude, but effective: method will start throwing when 31 dec 2000 (in the example) is reached.

于 2012-05-23T08:31:48.447 回答