私はよく知られたインターフェースを持っているとしましょう。IWellKnownInterface
これは既知でありCOM-visible
、登録されています。
C#,
このオブジェクトの管理された (正確には) 実装もあります。
public class MyWellKnownClass : IWellKnownInterface { ... }
最後に、extern
このインターフェイスのオブジェクトを受け入れるメソッドがあります。
[Whatever]
private static extern void ExternMethod(IWellKnownInterface veryWellKnown);
質問1:
CLR
観点から、次のコードの下で何が起こるか知りたいです。
IWellKnownInterface a = new MyWellKnownClass();
ExternMethod(a);
マネージ コードからアンマネージ COM オブジェクトを呼び出すことについて話している場合Runtime Callable Wrapper
、適切な引数変換を使用して、適切なオブジェクトを構築し、それを介して呼び出しを委任することがすべてであることは承知しています。ただし、マネージ COM オブジェクトがあり、それがアンマネージ コードで使用されている場合の状況に関する情報は見つかりませんでした。
質問2:
タイプは、同じ状況でdynamic
の動作にどのように影響しますか? CLR
内部の管理対象から非管理対象への相互運用ロジックを何らかの方法で変更しますか? MyWellKnownClass
インスタンスのラッパーをいくつか追加することはできますか?
dynamic a = new MyWellKnownClass();
ExternMethod(a);