powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверить наличие метода в dynamic + System.__ComObject
5 сообщений из 30, страница 2 из 2
Проверить наличие метода в dynamic + System.__ComObject
    #40025606
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
В ТЗ прописано позднее связывание.

Эм. А как тогда в VBA инстанциируется COM-класс дотнетовской библиотеки? Через CreateObject? Если да, то в чём смысл? VBA - это интерпретируемый язык, в нем связывание в любом случае делается на рантайме. А относительно уже инстанциированного экземпляра термины late/early binding неприменимы, и поэтому в приведении типа к интерфейсу я не вижу ничего, нарушающего ТЗ.
...
Рейтинг: 0 / 0
Проверить наличие метода в dynamic + System.__ComObject
    #40025611
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
А относительно уже инстанциированного экземпляра термины late/early binding неприменимы

Для экземпляра под late bindig подразумеваются вызовы через IDispatch.
...
Рейтинг: 0 / 0
Проверить наличие метода в dynamic + System.__ComObject
    #40025631
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Сон Веры Павловны
А относительно уже инстанциированного экземпляра термины late/early binding неприменимы

Для экземпляра под late bindig подразумеваются вызовы через IDispatch.

Для dynamic-экземпляра они и так будут делаться через IDispatch. А проверка/приведение типа - через IUnknown::QueryInterface.
...
Рейтинг: 0 / 0
Проверить наличие метода в dynamic + System.__ComObject
    #40025643
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
А проверка/приведение типа - через IUnknown::QueryInterface.

Ну да. Под капотом чтобы получить IDispatch (который, к слову сказать, сам от IUnknown наследуется) надо сначала вызвать QueryInterface. Потом уже ты вызываешь все что надо просто по имени метода (точнее по DispID, который по имени метода запрашиваешь). Typelib для всего этого необязателен. Он, в случае наличия, просто дополнительное удобство, которое позволяет заранее получить информацию о типах com-объектов (например, для генерации типизированных прокси, интеллисенса и т.п. вещей). А сам по себе IDispatch может прекрасно жить и работать вообще без typelib.
...
Рейтинг: 0 / 0
Проверить наличие метода в dynamic + System.__ComObject
    #40026705
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Antonariy
В ТЗ прописано позднее связывание.
Через CreateObject? Если да, то в чём смысл?
Да.
Смысл в том, что в последнее время мы плотно взялись за развитие COM-части ПО, включая ломание об колено старых херовых интерфейсов, и если запустить какой-нибудь макрос, не перекомпилированный после перелома, то возможны всякие фееричные ошибки вплоть до вылета экселя по-английски. Поэтому все наши шаблоны переведены на позднее связывание.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверить наличие метода в dynamic + System.__ComObject
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]