あまり雑誌などでも紹介されていないと思うのですが,.Net言語でも簡単に COM を実装することができます。知らなかった…
自分のために(^^)手順をメモ。なお,ここで紹介する操作は,VS2005で行ったものです。
1. プロジェクト生成ウィザードでは「クラスライブラリ」を選択。
2. クラスの実装は次のようにします。これは C# の場合ですが,VB.Netでもほとんど同じです。
(1) System.Runtime.InteropServices をインポート。
(2) インターフェースを明示的に定義。従ってインターフェースとそれを実装するクラスの2つを記述します。
(3) クラスには ClassInterfaceAttribute で ClassInterface.None を指定して,外部へ公開しないようにしておきます。
例として作成したコードはこんな感じ。
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace ScriptLib {
public interface CsInterface {
void Message(string msg);
}
[ClassInterface(ClassInterfaceType.None)]
public class CsClass : CsInterface {
public void Message(string msg) {
MessageBox.Show(msg, "C# COM");
}
}
}
3. プロジェクトのプロパティから「アプリケーション」タブの[アセンブリ情報]を開きます。
4.「アセンブリをCOM公開可能にする」チェックボックスをONにします。ここが重要。
5. プロパティ「ビルドイベント」タブの[ビルド後に実行するコマンドライン]に次のコマンドを定義します。
regasm $(TargetFileName) /tlb:$(TargetName).tlb /codebase
6. ビルドすれば出来上がり!!
ATLよりずっと簡単で,以外と使えそうです。