Использование методов расширения, определенных в C # из кода F # - PullRequest
11 голосов
/ 22 апреля 2009

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

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

Ответы [ 2 ]

18 голосов
/ 22 апреля 2009

Обновление:

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

open TheNamespaceOfExtensionMethod

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

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

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

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

9 голосов
/ 23 апреля 2009

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

Смотри также

F # методы расширения в C #

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

...