0

私はいくつかのATLCOMサービスを持っており、それぞれに独自の名前空間を持たせたいのですが、.NETのシステム名前空間と同じように単一のベース名前空間の下にあります。

たとえば、C#プロジェクトにこれらのCOMオブジェクトが含まれている場合、すべてが同じベース名前空間の下にあります。

using MyCompanyName.Terminator;
using MyCompanyName.Superman;
using MyCompanyName.Thor;

...代わりに、私が現在持っているのはこれです:

using Terminator;
using Superman;
using Thor;

...これは私が望まないことです。ベース名前空間とそのベースの下のサブ名前空間を使用できるようにしたい。ATLサービスを作成するときにこれを行う方法と、これを行うために何を変更する必要があるのか​​わかりません。IDLファイルで変更したものですか?

4

1 に答える 1

0

管理対象クライアントをターゲットにしている場合は、それらに名前空間を提供することができます。ただし、COMは言語に依存しないため、インターフェイス記述(タイプライブラリ)を使用して名前空間を提供することはできません。ただし、マネージラッパーアセンブリ(実際にはクライアントによって参照される)を作成するときはいつでも、RCWオブジェクトをアドレス指定するための名前空間を持つことができます。探しているキーワードは、プライマリ相互運用機能アセンブリです。これらは、元のライブラリのベンダーとしてクライアントが参照できるように提供するアセンブリです。これを単純化するために:あなたは仕事をしていますが、COMライブラリへの参照を追加するときにVisualStudioがあなたに代わって行います。相互運用機能アセンブリを作成していて、顧客はタイプライブラリを参照していませんが、生成したアセンブリを参照しています。を使用してtlbimp.exeツールでは、/namespaceパラメーターを使用して名前空間内にRCWタイプをカプセル化することができます。

于 2013-01-11T12:45:36.340 に答える