我有一個枚舉值用下面的屬性標記。第二個參數指示編譯器在使用該值時發生錯誤。我希望這種行爲適用於實現我的庫的任何人,但我需要在我的庫中使用此枚舉值。如何讓編譯器忽略庫中幾次使用的Obsolete錯誤。忽略ObsoleteAttribute編譯器錯誤
public enum Choices
{
One,
Two,
[ObsoleteAttribute("don't use me", true)]
Three,
Four
}
解決方案(謝謝大家)
public class EnumHack
{
static EnumHack()
{
// Safety check
if (Choices!= (Choices)Enum.Parse(typeof(Choices), "Three"))
throw new Exception("Choices.Three != 3; Who changed my Enum!");
}
[Obsolete("Backwards compatible Choices.Three", false)]
public const Choices ChoicesThree = (Choices)3;
}
看起來像我所有的選擇都是黑客。但是,無論如何,使用Obsolete屬性都是黑客行爲,因爲我希望將來可以重新啓用此功能。您以最快的答覆獲勝,易於實施,並且易於使用「FindAllReferences」進行跟蹤。 – chilltemp 2008-12-05 18:22:55
chilltemp - 你吮吸... Jon不需要點!我距離接管世界只有30步!!!!! ;) – TheSoftwareJedi 2008-12-05 18:52:54
如果你這樣做,它可能是一個好主意,把它標記爲[Obsolete] – 2008-12-05 19:10:22