3

VisualStudioのデバッガーでCOM / Interopオブジェクトを適切に(正しいタイプで)表示できるかどうか、またその方法を知っている人はいますか? 私が得るのは、「」のSystem.__ComObject値だけです (タイプを正しく識別しているにもかかわらず)?

例えば:

スクリーンショット

4

3 に答える 3

2

.NET および COMから: 完全な相互運用性ガイド:

メソッドの戻り値の型または参照渡しパラメーターを介して COM オブジェクトのインスタンスが返され、CLR が型を判別できない場合、COM オブジェクトは常に渡されるため、汎用の System.__ComObject 型が取得されます。 /インターフェイス ポインターとして返されます。

Marshal.CreateWrapperOfType以下の例のように、戻り値の型を変更してみてください。

MyType newObject = (MyType)Marshal.CreateWrapperOfType(oldObject, typeof(MyType))

次に、ウォッチ ウィンドウで newObject を確認すると、期待どおりのプロパティが含まれているはずです。

呼び出しが失敗すると、InvalidCastException がスローされます。

于 2009-08-26T23:30:07.230 に答える
1

私はイミディエイト ウィンドウを使用して、COM オブジェクトのプロパティを手動でクエリしました。欠点は、あなたがインテリセンスを得るとは思わないので、何を検査したいのかを正確に知る必要があることです。

于 2009-08-21T04:23:35.020 に答える
1

したがって、これは答えではありませんが、これら 2 つのスクリーン ショットを確認してください。これは同じアプリケーションからのものですが、2 つの異なるブレーク ポイントにあります。どちらの場合も、COM オブジェクトは同じ COM/AX ライブラリからのものです。あるケースでは「System.__ComObject」が表示され、別のケースでは適切なタイプが表示される理由がわかりません。ただし、どちらの場合も、適切なオブジェクト/インターフェイス プロパティが表示されます。何を与える?違いはなぜですか?

ここの最初のものは、「System.__ComObject」を表示していることを示していますが、オブジェクトのすべてのプロパティも表示しています。クリックするとフルサイズの画像が表示されます。

代替テキスト

2 つ目は、「System.__ComObject」を完全に非表示にします。クリックするとフルサイズの画像が表示されます。

代替テキスト

于 2009-08-25T15:06:31.877 に答える