我正在尝试编写一个应该使用C#/ .Net dll的f-sharp程序。 C#代码如下所示:
public delegate void OnX (X x);
public delegate void OnXError (X x, string error);
public Foo(OnX onX, OnXError onXError);
我目前在F#中的尝试看起来像这样:
let OnX (x:X) =
()
let OnXError (x:X) (error:sting)=
()
let foo=new Foo(OnX,OnXError)
这不编译。 OnX的类型为x - >单位而不是OnX。我还试图以单独的绑定方式创建委托,但还没有找到解决方案。
答案 0 :(得分:2)
您可以明确地创建委托:
let d1 = new OnX(fun (x: X) -> ())
let d2 = new OnXError(fun (x: X) (error: string) -> ())