如何从Xamarin Android C#项目中调用返回字符串选项的PCL中的F#方法?

时间:2016-07-06 17:26:21

标签: xamarin f# xamarin.android

如何创建可以从C#Xamarin Android项目调用的F#PCL?

简单,就像在PCL中一样:

namespace FSharpPCL2

type Class1() = 
    member this.X (s: string option) = 
      s
      |> Option.map (fun t -> t + "stuff")

尝试从C#Xamarin Android项目中调用它,您将收到类似这样的编译器错误:

  

MainActivity.cs(26,41):错误CS0012:类型   Microsoft.FSharp.Core.FSharpOption 1'定义在一个   未引用的程序集。考虑添加引用   程序集`FSharp.Core,Version = 3.78.3.1,Culture = neutral,   公钥= b03f5f7f11d50a3a'

但我不清楚你是如何在C#项目中实际包含正确的FSharp.Core的。

1 个答案:

答案 0 :(得分:2)

你应该看看FSharp.Core guidelines,它解释了你在这些场景中的选择。

在您的情况下,您可以在C#-xamarin项目中向FSharp.Core nuget package添加包引用。 FSharp.Core, Version=3.78.3.1F# 3.1/Profile 78。您可以通过查看References>中的版本/路径来确保引用所需的版本。 FSharp.Core>属性。如果没有,您可以编辑csproj并将路径更改为适当的版本。

另一种方法是直接向FSharp.Core添加引用,该引用随Visual / Xamarin Studio一起提供 %PROGRAMFILES(X86)%\Reference Assemblies\Microsoft\FSharp\.NETCore\3.78.3.1\FSharp.Core.dll/Library/Frameworks/Mono.framework/Versions/4.4.1/lib/mono/Reference Assemblies/Microsoft/FSharp/.NETCore/3.78.3.1/FSharp.Core.dll