Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Распределённые приложения и сеть > WITHEVENTS, интерфейсы делегатов и COM |
Автор: and42 15.11.2010, 12:20 |
Уважаемые. Не могу нигде найти на форумах по интересующей теме. Есть сторонний СОМ, у которого объявлены куча интерфейсов и есть интерфейс в виде делегата, который соответствует событию некоторого объекта этого COM, который явно виден в проекте С#, после объявления в Reference и создания new(экземпляра) этого объекта. Этот делегат связан с классом объекта этого COMа. Что бы не смешивать все в одно, попробую разделить на два подвопроса. 1. Ранее я использовал эти события в VB(A) сравнительно легко. Чтобы использовать как то метод нужного события я создавал переменную WithEvents типа этого обьекта, те с событием. Затем назначал соответствие этой переменной контролируему объекту такого же типа командой Set. Тогда у этой объявленной переменной появлялся и необходимый мне метод-обработчик, и другие методы событий подконтрольного обьекта. При нужном мне событии в объекте, этот метод обрабатывался в нашей переменной. Конечно понимаю, вся эта простота реализуется закрыто, и прямого аналога в C# нет. Отсюда первый вопрос. Есть ли у кого реальный пример, вообще как реализовать WithEvents в C#? Хотя бы без СОМ? Хотя подозреваю, что это классическое использование делегата. 2. Но вот то же самое с использованием COM интерфейса в C# для меня полная непонятка. Подозреваю, что здесь все гораздо сложнее. Те инициатор события в COM где то там (в другом приложении) и от его интерфейса есть только объявленный интерфейс типа делегат, а обработчик нужен в моем классе? Про делегаты прочитал на десять раз, и про класс с методом тоже как то хоть с трудом, но укладывается. Но вот как связать реальный обект "там" и здесь. ![]() Уфф, кажется ничего не напутал... ![]() Может кто то реализовывал подобное или хоть ссылочку плиз? Заранее благодарен. |
Автор: mihryak 16.11.2010, 01:39 |
честно говоря, мало чего понял, хотя набор ключевых слов не предвещает больших сложностей, и с плюсы в дотнете нормально делегаты передаются, с com-ом не должно быть проблем если можешь - выложи свой ком с более подробным и более близким к коду описанием, что требуется сделать |