我想将一个方法标记为Obsolete,如果从任何地方调用它,也会导致编译失败。
我在这里找到了一个解决方案How do I mark a method as Obsolete/Deprecated?。
答案表明这种语法,说布尔修饰符将达到我想要的效果(编译失败)
[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
然而,虽然这适用于同一个项目;当从另一个项目调用该方法时它没有(我甚至有视觉工作室生产力工具显示它的错误,但编译仍然成功)
这是设计的吗?或者有解决方法吗?
答案 0 :(得分:2)
如果在标记为过时的方法或类中使用标记为过时的内容,编译器将不会给您任何警告或错误。
在某些类中考虑以下过时的方法:
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
}
}