COM相互運用というものです。~
.NETで作成したアセンブリをCOMとして利用できるという代物。~
ExcelVBAなんかからも参照できます。~

*手順 [#xbd14a26]
手順としては
+クラスライブラリのプロジェクト(orソリューション)を作成
+プロジェクトのプロパティの「ビルド」タブ内の「COM相互運用機能の登録」にチェック
+インターフェイスとクラスを作成する。
+ビルドする
+できたDLLを他の環境でも利用したい場合はregasmで登録

上記の手順になります。~
あと、VisualStudioは管理者権限で実行しておいてください。~

*クラスの作成について [#g83fb98d]
COM相互運用では、公開用のインターフェイスとインターフェイスを実装したクラスが必要になります。~
~
まずはインターフェイスから見ていきます。
#codeprettify(lang-vb linenums:1){{ 
namespace comtest{
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    [Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
    [ComVisible(true)]
    public interface IComTest{
    }
}
}}
ソースを見てもらうとわかるように、クラスの宣言の前に、いくつか宣言されているものがあります。
|設定          |説明|h
|InterfaceType |???|
|GUID          |インターフェイスを識別するGUID|
|ComVisible    |参照の可否を指定|


次にクラスです。
#codeprettify(lang-vb linenums:1){{ 
namespace comtest{
    [ClassInterface(ClassInterfaceType.None)]
    [Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")]
    [ComVisible(true)]
    [ProgId("comtest.ComTest")]
    public class ComTest : IComTest{
        public string TestProperty{
            get;
            set;
        }
        public void testMethod();
    }
}
}}

ソースを見てもらうとわかるように、クラスの宣言の前に、いくつか宣言されているものがあります。
|設定          |説明|h
|ClassInterface|???|
|GUID          |インターフェイスを識別するGUID|
|ComVisible    |参照の可否を指定|
|ProgId        |参照する名称の指定。無くてもOK|

こんなかんじでインターフェイスとクラスを作って、ビルドしてregasmやればできます。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS