Definieren von C#-Ereignissen in F#C#

Ein Treffpunkt für C#-Programmierer
Guest
 Definieren von C#-Ereignissen in F#

Post by Guest »

In einer C#-Klasse habe ich die folgende Definition

Code: Select all

public event Action Output1;
Diese Art der Definition ist für eine Drittanbieteranwendung (TPA) erforderlich. Diese Anwendung importiert eine DLL, die Klassen mit Definitionen wie den oben genannten enthält, und stellt diese Felder grafisch dar.
Ich möchte diese Klassen in F# definieren. Also habe ich das offizielle Äquivalent ausprobiert

Code: Select all

let output1 = Event()
[]
member __.Output1 = output1.Publish
aber die TPA-Anwendung erkennt es nicht. Ich vermute, dass TPA Reflektion verwendet, also habe ich die in C# und F# erstellte DLL in ILSpy überprüft

Code: Select all

public event Action Output1;

Code: Select all

[CLIEvent]
public event FSharpHandler Output1
{
add
{
if (init@16 < 1)
{
LanguagePrimitives.IntrinsicFunctions.FailInit();
}
output1.Publish.AddHandler(value);
}
remove
{
if (init@16 < 1)
{
LanguagePrimitives.IntrinsicFunctions.FailInit();
}
output1.Publish.RemoveHandler(value);
}
}
Der Grund, warum TPA die F#-Definition nicht erkennt, ist dieser Unterschied.
Daher meine Frage:
Gibt es eine Möglichkeit dazu? Definieren Sie das Mitglied in F# so, dass es GENAU wie das C#-Mitglied aufgebaut ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post