2016-09-21 2 views
2

Ich habe eine F # Klassenbibliothek als solche:Rückruf von C# F #

namespace FsharpTestSystem 

open System 
open System.IO 

open TCLoggerEntity 
open TCIQuoteEntity 

type TestCallback() = 
    member this.LoggerOutput() = Logger.Info("F#") 
    member this.OnQuote(q : TCQuote) = Console.WriteLine(q.ToString()) 

eine Referenz dieses Fis Anordnung in eine C# Projekt Hinzufügen, ich habe getestet, dass ich LoggerOutput Fein von C# aufrufen können. Allerdings, wenn ich versuche, C# Ereignisrückruf ausführt in F # haben, bekomme ich einen Fehler in der Zeile unter:

Von C#:

using FsharpTestSystem; 

public delegate void QuoteChangeEvent(TCQuote q); 
event QuoteChangeEvent OnQuoteChange; 

TestCallback fsts = new TestCallback(); 
api.MAPI.OnQuoteChange += fsts.OnQuote(); // this doesn't work 

fsts.LoggerOutput(); // This works fine 

Antwort

5

Sie den Aufruf Ihre Methode, die versuchen würde, und verwendet, was OnQuote zurück als der Ereignishandler.

OnQuote der Event-Handler ist, versuchen Sie so: -

api.MAPI.OnQuoteChange += fsts.OnQuote; 
+0

Ich schwor ich, dass versucht. Na gut, danke. – Ivan