Scott Nimrod
Scott Nimrod

Reputation: 11595

How do I subscribe to an event implemented in F# from a C# client?

How do I subscribe to an event implemented in F# from a C# client?

I have the following code:

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

This line results in the following error:

Error CS0012 The type 'FSharpHandler<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'FSharp.Core, Version=3.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

I attempted to troubleshoot and found this:

However, I do not understand the answer. My events are defined under a namespace and not a module. Hence, me not understanding the reasoning of that discussion.

I then tried adding the following reference to my C# project:

FSharp.Core 4.0.0.1 

and

FSharp.Core 3.1.2.5

However, I still receive the same error.

When managing Nuget packages, I do not see the version "3.3.1.0" listed as an option.

Implementation Details:

The signature of the signin event from the C# client is the following:

public event FSharpHandler<Unit> SignInRequested;

I actually declare the event as the following:

let signInRequested = new Event<_>()

Any suggestions?

Upvotes: 1

Views: 168

Answers (1)

asibahi
asibahi

Reputation: 887

You need to have a look at the CLIEventAttribute . Events declared from F# cannot be used from C# unless they are declared with this attribute.

Upvotes: 0

Related Questions