从F#拨打C#

时间:2014-09-10 09:21:28

标签: c# f# mono

任何从f#代码调用c#函数的想法。

我有一个像这样的c#函数

public class VehicleDetailsBridge
{

    public void SaveVehicle(long id)
    {
         var db = "test call";
     }
}

然后在f#中我有:

type Persistence as this =
    member x.SaveToDatabase(LatestVid)
    let b = VehicleDetailsBridge()
    b.SaveVehicle(LatestVid)

我在我的F#项目中引用了C#类库。

然而,当我运行此代码时,我在Xamarin中得到以下异常:

  

Mono.Debugger.Soft.VMDisconnectedExecption

2 个答案:

答案 0 :(得分:2)

type Persistence() =                         // need braces here, and not 'as this'
    member x.SaveToDatabase(latestVid) =
        let b = VehicleDetailsBridge()       // indent the method body
        b.SaveVehicle(latestVid)

我的完整F#程序如下:

open FsCsInterop

type Persistence() =                         // need braces here, and not 'as this'
    member x.SaveToDatabase(latestVid) =
        let b = VehicleDetailsBridge()       // indent the method body
        b.SaveVehicle(latestVid)
        printfn "Saved %d" latestVid

[<EntryPoint>]
let main argv = 
    let p = Persistence()
    p.SaveToDatabase(2L)
    0

// Prints "Saved 2"

答案 1 :(得分:0)

试试这个:

let b = VehicleDetailsBridge() // create instance of class
b.SaveVehicle(LatestVid)

VehicleDetailsBridge是一个类,因此您需要将其作为一个类打开。