Можете ли вы сделать метод расширения статическим / общим? - PullRequest
8 голосов
/ 21 мая 2010

Хорошо, я, наверное, что-то здесь не так понял, но, насколько я понимаю ...

  • Метод расширения должен содержаться в модуле, а не в классе
  • Вы не можете создавать методы в модулях Static / Shared
  • Следовательно, вы не можете использовать метод расширения в классе, не создав его экземпляр.

Другими словами, вы не можете создать метод расширения для String с именем «MyExtensionMethod» и использовать:

String.MyExtensionMethod("String")

Но вместо этого ..

Dim test As String
test.MyExtensionMethod("string")

Это правильно? Или я могу заставить методы расширения работать как статические методы?

1 Ответ

10 голосов
/ 21 мая 2010

Вы правы. Методы расширения могут действовать только на экземпляры типа.

И нет, к сожалению, нет хитрого способа написания методов расширения, которые действуют на сами типы, ведя себя как статические методы.

...