Доступ к карте F # из кода C # - PullRequest
1 голос
/ 15 декабря 2011

Есть ли простой способ получить доступ к карте F # из кода C #?

Я имею в виду, что списки C # и F # являются перечисляемыми, поэтому я могу перебирать список F # из кода C # только через этот интерфейс, как описано в этом посте .

Предположим, я объявил такую ​​карту внутри модуля F # под названием module.fs:

let MyMap : Map<string,T>>

Я бы хотел получить доступ к карте изнутри C # следующим образом:

Map m = module.MyMap;

Можно ли сделать что-то подобное без выполнения преобразований?

1 Ответ

4 голосов
/ 15 декабря 2011

Map называется FSharpMap при доступе вне F #.Вы можете использовать var, чтобы избежать неудобного имени типа (в вашем примере).Однако большинство F # -специфичных типов реализуют интерфейсы, которые хорошо воспроизводят границы языка.Например, Map реализует IDictionary<_,_>.В API, которые будут использоваться за пределами F #, рекомендуемое решение состоит в том, чтобы вместо этого предоставлять эти интерфейсы.

Ознакомьтесь с Руководством по проектированию компонентов для получения дополнительных рекомендаций.Вы можете без проблем использовать FSharpMap из C #.Это выглядит странно и не поддается идиоматическому коду C #.

...