COM-конструктор, выбрасывающий InvalidCastException - PullRequest
1 голос
/ 03 января 2011

Я хотел бы объявить управляемый класс (встроенный в C # /. NET) в файле IDL, но когда я добавляю для него кокласс, я позже получаю право InvalidCastException, когда конструктор завершает работу и возвращается. (Невозможно привести объект «MyThing» к типу «MyThingClass».)

Так что в моем тестовом приложении (также C # /. NET) после регистрации tlb оно понимает достаточно для вызова реального конструктора. Я могу отладить это даже. Все прекрасно работает, пока не вернется из конструктора.

Я думал о попытке importlib потянуть DLL в IDL, но мне нужен tlb перед сборкой (проблема с курицей или яйцом).

Погуглив вопрос, выявляются простые проблемы приведения.

Есть идеи?

1 Ответ

0 голосов
/ 03 января 2011

Как правило, мы создаем интерфейс COM, а затем убедитесь, что класс реализует интерфейс. Не все классы .NET понятны для VB6, и это было проблемой с самого начала. Есть две книги на эту тему, которые я знаю достаточно хорошо, чтобы рекомендовать к прочтению:
.NET 2.0 рецепты взаимодействия и
Профессиональная совместимость с Visual Basic .

2-я книга намного старше и охватывает .NET 1, но все же имеет ряд полезных замечаний.

Полагаю, на основании того, что вы упомянули, вы возвращаете класс, который VB (хорошо, это может быть VC ++ или что-то еще) не может понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...