如何从C#客户端订阅在F#中实现的事件?

时间:2016-09-09 12:38:45

标签: f#

如何从C#客户端订阅在F#中实现的事件?

我有以下代码:

_dispatcher.SignInRequested += StartActivity(typeof(SignInActivity));

此行会导致以下错误:

  

错误CS0012类型' FSharpHandler<>'在一个程序集中定义   没有引用。您必须添加对程序集&FSHrp.Core的引用,   Version = 3.3.1.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。

我尝试排查并找到this

然而,我不明白答案。我的事件是在命名空间而不是模块下定义的。因此,我不理解该讨论的推理。

然后我尝试将以下引用添加到我的C#项目中:

FSharp.Core 4.0.0.1 

FSharp.Core 3.1.2.5

但是,我仍然收到同样的错误。

在管理Nuget包时,我没有看到版本" 3.3.1.0"列为一个选项。

实施细则:

来自C#客户端的signin事件的签名如下:

public event FSharpHandler<Unit> SignInRequested;

我实际上将事件声明如下:

let signInRequested = new Event<_>()

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您需要查看CLIEventAttribute。从F#声明的事件不能在C#中使用,除非使用此属性声明它们。