2010-06-11 8 views
1

Я создаю приложение с использованием C#, которое будет использовать модули CATIA COM. Когда я импортирую COM внутри моего проекта C#, я считаю, что Visual C# express генерирует Interop автоматически для меня.Как отлаживать приложения с использованием COM-интерфейсов?

Все это работает правильно. Однако, когда я пытаюсь отлаживать приложение и использовать часы во время выполнения, каждый объект является System.__ComObject, и я не могу получить их «реальное» значение.

Есть ли способ рассказать отладчику о типах моих COM-объектов?

Цель - ознакомиться с этим новым API. Я не очень хорошо знаю. Иногда его довольно сложно угадать правильные типы для всего, так как иерархия интерфейса довольно глубокая.

ответ

2

Вы не отправляете пример кода, где у вас есть проблема. В основном это зависит от того, как вы создаете или создаете объект, который вы хотите увидеть в Debugger (создать экземпляр объекта с помощью new всегда лучше, если это возможно). Вы должны найти информацию о Runtime Callable Wrapper (RCW). Это «парень», который не может понять, чего вы хотите.

Кстати, если вы можете использовать Visual Studio 2010, ваш live может быть более легким (см. http://blogs.msdn.com/b/habibh/archive/2009/09/22/debugging-a-com-object-runtime-callable-wrapper-with-visual-studio-2010.aspx).

Две ссылки могут помочь вам решить эту проблему, если вы используете

http://dotnetdebug.net/category/com-interop/

http://resources.esri.com/help/9.3/arcgisengine/dotnet/e6532ba4-d769-48a6-8bc4-8592352b9bf4.htm

Inspecting an instance of a COM/Interop class properly in VS.Net's debugger?

http://dotnetdebug.net/2005/09/10/runtime-callable-wrapper-internals-and-common-pitfalls/

+0

Спасибо большое, я буду проверить это понедельник в то время как мне платят за это =) – Eric

+0

И вам лучше дать простой обзор, как только вы это сделаете, для удобства другой аудитории, Эрик :) –