COM相互運用というものです。
.NETで作成したアセンブリをCOMとして利用できるという代物。
ExcelVBAなんかからも参照できます。
手順としては
上記の手順になります。
あと、VisualStudioは管理者権限で実行しておいてください。
COM相互運用では、公開用のインターフェイスとインターフェイスを実装したクラスが必要になります。
まずはインターフェイスから見ていきます。
lang-vb linenums:1
namespace comtest{
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] [Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")] [ComVisible(true)] public interface IComTest{ }
} }} ソースを見てもらうとわかるように、クラスの宣言の前に、いくつか宣言されているものがあります。
設定 | 説明 |
InterfaceType | ??? |
GUID | インターフェイスを識別するGUID |
ComVisible | 参照の可否を指定 |
次にクラスです。
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(); }
} }}
ソースを見てもらうとわかるように、クラスの宣言の前に、いくつか宣言されているものがあります。
設定 | 説明 |
ClassInterface | ??? |
GUID | インターフェイスを識別するGUID |
ComVisible | 参照の可否を指定 |
ProgId | 参照する名称の指定。無くてもOK |
こんなかんじでインターフェイスとクラスを作って、ビルドしてregasmやればできます。