Который “лучше”: COM DLL или Стандарт DLL с Typelib?

Вы создали интерфейс, у которого нет свойства «options». Затем вы устанавливаете свой тип «Поле» равным этому интерфейсу (или потенциально равному другому интерфейсу, у которого есть свойство «options»).

Затем вы пытаетесь вызвать свойство «options», которое может существовать или не существовать. Вот почему вы получаете ошибку ts при компиляции.

Переключение типа возврата на «any» работает, потому что компилятор не будет пытаться угадать тип возвращаемого вами объекта (поэтому вполне вероятно, что «options» будет допустимым свойством и, следовательно, не должно вызывать ошибки).

Если вы собираетесь вызывать свойство «options» для типа «Field», вы должны убедиться, что оно существует, прежде чем пытаться скомпилировать скрипт ts.

Возможно, лучше изменить ваши методы на «getSelectField» и «getNumberField» .... но, конечно, есть несколько способов, которыми вы можете справиться с этим.

6
задан brian d foy 20 October 2008 в 14:39
поделиться

2 ответа

TypeLib также важны, если Вы когда-нибудь хотите переместить COM-компоненты в управляемый код в будущем. Или имейте управляемый код, взаимодействуют с COM-компонентами.

С typelib существует много инструментов, которые автоволшебно переведут Ваши подписи COM в интерфейсы .NET и типы. Это может быть сделано вручную, но с крупным проектом это - конечно, огромное средство экономии времени.

3
ответ дан 17 December 2019 в 18:21
поделиться

Это действительно зависит от клиентов компонента, я думал бы.

0
ответ дан 17 December 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: