Несоответствие типов при инициализации COM-объекта - PullRequest
1 голос
/ 03 декабря 2010

У меня есть модуль Excel VBA, вызывающий dll C # COM.

Иногда возникает несоответствие типов при прохождении отладчика в VBA, когда я инициализирую COM-объект следующим образом.

If (IsEmpty(cm)) Then
    Set cm = CreateObject("aimd.CMAdaptor")
End If

Я могу добавить точку останова в VBA и добавить часы в переменную cm, и посмотреть, что тип не соответствует тому, что я создал. Тип предназначен для свойства внутри объекта, который я пытаюсь создать. Указанный объект был явно создан моим объектом "aimd.CMAdaptor", который я создал, я просто не получаю указанный мной корневой объект, только дочерний.

Так как это COM-объект, мне интересно, могут ли мои обновления использовать несовпадающие данные регазма или что-то, что заставляет его искать объект в неправильном месте. Я постоянно перестраиваю его для отладки и добавляю в установщик, который вызывает regasm как действие сборки.

1 Ответ

1 голос
/ 03 декабря 2010

оказалось глупой ошибкой ... Я копировал атрибуты, которые позволяют вам выбрать имя класса, как видно на стороне VBA ...

[ProgId ( "aimd.CMAdaptor")]

это было в двух разных классах. Видимо, нет претензий, когда вы делаете это. Я не уверен, почему он выбрал один над другим, но после обновления неверного атрибута все работает нормально.

...