考虑这个枚举:扩展方法 - 不能暴露在枚举本身方法
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