次の方法で共有


COM への .NET Compact Framework コンポーネントの公開

更新 : 2007 年 11 月

.NET Compact Framework コンポーネントをネイティブ コードに公開できますが、この相互運用性は .NET Framework と比較した場合に相違があります。

マネージ コンポーネントの公開

マネージ .NET Compact Framework コンポーネントをネイティブ アプリケーションで使用できます。そのためには、次のタスクを実行します。

  • COM プログラミングを考慮する場合は、マネージ型を設計します。たとえば、ジェネリック型は使用しません。

  • マネージ インターフェイスに開示する機能を定義し、マネージ オブジェクトでこのインターフェイスを実装します。次のことが推奨されています。

    • マネージインターフェイスの GUID 属性、InterfaceType 属性、および ComVisible 属性を使用します。

    • マネージ オブジェクトの ClassInterface(ClassInterfaceType.None) 属性を使用します。

  • マネージ型のネイティブな定義を作成します。

  • マネージ オブジェクトを COM インターフェイスとしてネイティブ コードに渡します。これにより、マネージ オブジェクトによって実装されたマネージ関数を COM インターフェイスを使用してネイティブ コードから呼び出すことができます。

.NET Compact Framework での違い

ネイティブ コードからマネージ .NET Compact Framework 関数を呼び出すには、まずランタイムを使用してネイティブ コードに至るまでのデリゲートまたはマネージ インターフェイスをマーシャリングする必要があります。つまり、ネイティブ コードにマネージ コンポーネントを公開するには常に、まずマネージ コード (マネージ実行可能ファイルを含む) から作業を開始する必要があります。

.NET Compact Framework では、ネイティブ コードに対して次の相互運用性がサポートされません。

  • Regasm.exe などのアセンブリ登録ツールにより、COM クライアントでマネージ コンポーネントを COM クラスとして使用できるようにすること。

  • COM からマネージ型をアクティブ化すること。

  • ネイティブ コードからランタイムをホストすること。

  • ActiveX コントロールをホストすること。.NET Compact Framework では AxHost クラスがサポートされません。また、Microsoft Visual Studio 2005 およびデザイナを使用して、ActiveX コントロールをマネージ フォームの親にできません。ただし、.Net Compact Framework では COM 相互運用機能がサポートされており、独自の ActiveX コンテナ ホストを作成するためのインフラストラクチャが用意されています。

  • シングル スレッド アパートメントを使用するために COM を初期化すること。

  • 自動生成されるクラス インターフェイス。明示的なインターフェイス内でネイティブコードに公開する関数はラップする必要があります。

  • 自動生成される GUID。ネイティブ コードに公開する各インターフェイスには、明示的な guid を与える必要があります。

公開されるマネージ コンポーネントのデザイン時属性

マネージ コンポーネントを COM に公開するためのデザイン時属性を指定できます。.NET Compact Framework では、.NET Framework で使用できる属性のうち、次のサブセットをサポートしています。

参照

その他の技術情報

.NET Compact Framework の相互運用性