Erstellen Sie COM / ActiveXObject in C #, verwenden Sie es aus JScript, mit einfachem Ereignis

Ich möchte ein COM-Objekt in C # erstellen und es über IDispatch aus JScript verwenden. Dieser Teil ist ziemlich einfach.

Ich möchte auch einfache Rückrufe für das COM-Objekt implementieren, ähnlich dem Ereignis, das vom XmlHttpRequest-Objekt verfügbar gemacht wird, das in einem Browser verwendet werden kann. Mit diesem Modell kann Javascript Ereignishandler wie diesen anhängen:

var xmlhttp = new ActiveXObject("MSXML.XMLHTTP"); 
xmlhttp.onReadyStateChange = function() {
  ...
};

Ich möchte, dass mein clientseitiger JScript-Code so aussieht:

var myObject = new ActiveXObject("MyObject.ProgId");
myObject.onMyCustomEvent = function(..args here..) { 
   ...
};

Wie sieht der C # -Code aus? Ich möchte den allgemeinen Fall - Ich möchte in der Lage sein, Argumente an das Javascript fn zurückzugeben.

Ich habe gesehenWie kann ich ein ActiveX-Steuerelement erstellen, das mit C # geschrieben wurde, um Ereignisse in JavaScript auszulösen, wenn Sie darauf klicken? , aber die Antworten dort sehen wirklich kompliziert in der Implementierung und in der Verwendung aus.

VonDieser BeitragEs scheint, dass XMLHttpRequest-Ereignisse keine COM-Ereignisse sind. Dasonreadystatechange ist eine Eigenschaft vom TypIDispatch. Wenn Script-Clients diese Eigenschaft auf eine Funktion setzen, stellt JScript sie als IDispatch-Objekt bereit.

Das einzige verbleibende Problem besteht darin, das IDispatch über C # aufzurufen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage