考慮這個枚舉:擴展方法 - 不能暴露在枚舉本身方法
enum State
{
On,
Off
}
...而這個擴展方法:
public static void Foo(this Enum e)
{
// Here be dragons...
}
如果我想打電話給美孚( ),我必須在Enum的一個屬性中調用它:State.On.Foo()
...我無法在Enum本身上調用它:State.Foo()
。
這是爲什麼?我需要做什麼,能夠在Enum本身上調用Foo()?
我可以在Enum.Format(),Enum.GetName()等邊添加Foo()嗎? – roosteronacid 2010-11-02 11:55:10
@roosteronacid:不,這些都是靜態方法。你不能僞造向類型添加靜態方法。 – 2010-11-02 12:36:58
@roosterronacid嗨,不要以爲你可以。正如Jon所說,擴展方法用於對象的實例。有關如何解決此問題的一些示例,您可以查看http://www.extensionmethod.net/Details.aspx?ID=255我不太確定這樣做會實際上給你看起來更好或更容易維護的代碼,但你可以看看代碼示例。 – Mikael 2010-11-02 12:39:13