我希望将一个方法标记为过时,如果从任何地方调用它,也会导致编译失败。
我在这里找到了一个解决方案,How do I mark a method as Obsolete/Deprecated?。
一个答案暗示了这个语法,说布尔修饰符将达到我想要的效果(编译失败)。
[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
然而,虽然这在同一个项目上有效,但在调用另一个项目的方法时却没有(我甚至有visual生产力工具为它显示一个错误,但编译仍然成功)
这是故意的吗?还是有解决办法?
发布于 2016-03-09 23:41:25
如果在方法或类中使用标记为过时的内容,并且标记为过时,编译器将不会给您任何警告或错误。
在某些类中考虑以下过时的方法:
public class SomeClass
{
[Obsolete("Don't use",true)]
public static void ObsoleteMethod() { }
}
预期的行为是,每当使用编译器时,它都会产生一个编译器错误。
但是,如果在另一种过时的方法中使用它,则甚至不会收到编译器警告。
public class AnotherClass
{
public void Method()
{
SomeClass.ObsoleteMethod(); // Compiler error
}
[Obsolete("Avoid use",false)]
public void AnotherObsoleteMethod()
{
SomeClass.ObsoleteMethod(); // No error and no warning
}
}
如果整个类被标记为过时,也是如此:
[Obsolete()]
public class ObsoleteClass
{
public void Method()
{
SomeClass.ObsoleteMethod(); // No error
}
}
https://stackoverflow.com/questions/29843459
复制相似问题