Использование методов расширения, определенных в С# из кода F #

У меня есть ряд методов расширения, определенных для разных классов в библиотеке С#. В настоящее время я пишу код F # и вместо того, чтобы переписывать этот код мне просто хотелось бы использовать мои существующие методы расширения в моем коде F #.

Я добавил ссылку на библиотеку и использовал открытый оператор для импорта пространства имен, но методы расширения не отображаются в F #

Ответ 1

Обновление:

В текущей версии F # вы можете просто использовать методы расширения, добавив

open TheNamespaceOfExtensionMethod

в исходный файл (как и в С# с директивой using) и просто вызовите метод расширения, как если бы это был обычный метод экземпляра.

Кстати, вы всегда можете вызывать их напрямую, как обычный статический метод, и передать ссылку на объект в качестве первого параметра без каких-либо директив, если хотите. Метод расширения - это просто статический метод, украшенный ExtensionAttribute под капотом.

Оригинальный ответ (до версии F # 2010 бета, а не истина больше, как указывает Dykam):

Я не думаю, что методы расширения поддерживаются F #. Вы всегда можете вызвать их напрямую, как обычный статический метод, и передать ссылку на объект в качестве первого параметра.

Ответ 2

Возможность "импортировать" методы расширения С#/VB будет поддерживаться в следующей версии F #.

См. также

Методы расширения F # в С#

для более подробной информации по теме.