Рассмотрим Enum:методы расширения на Enum - не в состоянии выставить методы на самом Enum
enum State
{
On,
Off
}
... И этот метод расширения:
public static void Foo(this Enum e)
{
// Here be dragons...
}
Если я хочу вызвать Foo (), я должен назвать его одним из свойств Enum: State.On.Foo()
... Я не могу назвать его на самом Enum: State.Foo()
.
Почему это? И что мне нужно сделать, чтобы иметь возможность называть Foo() на самом Enum?
Могу ли я добавить Foo() вдоль Enum.Format(), Enum.GetName() и т. Д.? – roosteronacid
@roosteronacid: Нет, это статические методы. Вы не можете подделать статические методы для типа. –
@roosterronacid Привет, не думай, что можешь. Как сказал Джон, методы расширения используются для экземпляров объектов. Для некоторых примеров того, как обойти это, вы можете посмотреть, например. http://www.extensionmethod.net/Details.aspx?ID=255 Я не уверен, что это действительно даст вам код, который выглядит намного лучше или проще в обслуживании, но вы можете взглянуть на примеры кода в любом случае. – Mikael