Создать COM / ActiveXObject в C #, использовать из JScript, с простым событием
Я хотел бы создать COM-объект в C # и использовать его через IDispatch из JScript. Эта часть довольно проста.
Я также хочу реализовать простые обратные вызовы для объекта COM, аналогичные событию, предоставляемому объектом XmlHttpRequest, который можно использовать в браузере. Эта модель позволяет Javascript присоединять обработчики событий следующим образом:
var xmlhttp = new ActiveXObject("MSXML.XMLHTTP");
xmlhttp.onReadyStateChange = function() {
...
};
Я хочу, чтобы мой код JScript на стороне клиента выглядел так:
var myObject = new ActiveXObject("MyObject.ProgId");
myObject.onMyCustomEvent = function(..args here..) {
...
};
Как выглядит код C #? Мне нравится общий случай - я хотел бы иметь возможность передавать аргументы обратно в Javascript fn.
Я виделКак сделать элемент управления ActiveX, написанный на C #, вызывать события в JavaScript при нажатии? , но ответы там выглядят действительно сложными для реализации и сложными в использовании.
ОтЭта статьяПохоже, что события XMLHttpRequest не являются событиями COM.onreadystatechange
это свойство типаIDispatch
, Когда клиенты сценариев устанавливают это свойство для функции, JScript отображает его как объект IDispatch.
Единственная проблема, которая остается, - это вызвать IDispatch из C #.