2009-04-27 24 views
2

明示的に3つのGUID定数を作成し、クラスのComClass属性で使用するいくつかのVB.NETコードを実行しました。私は、プロジェクトオプションの "Make COM-Visible"と "COM interopのための登録"オプションをチェックするだけで、COM対応のクラスを過去に書いたことがあります。この明示的なコードは単に不要ですか、それとも、これらの2つのオプションが何を超えているのでしょうか?明示的にあなたが露出しているから露出してはならないヘルパークラス、内部ツール、または内部クラスのようなものを防ぐことができ暴露するクラスと列挙の属性を置くことによってVB.NETは自動的にComClass属性とGUIDを生成しますか?

<ComClass(MenuHandler.ClassId, MenuHandler.InterfaceId, MenuHandler.EventsId)> _ 
Public Class MenuHandler 
    Public Const ClassId As String = "A2204623-A902-44d4-B524-FDFFCD176E53" 
    Public Const InterfaceId As String = "3449CA8B-16DF-4a61-8BAB-DFF27AE70F5E" 
    Public Const EventsId As String = "06C156DD-0ABA-437e-9EE0-C1CE2CA34033" 
End Class 

答えて

2

:ここでは、スニペットです。これはマイクロソフトから推奨される方法です。何かをお勧めするときは、通常、あなたがそれをしなければ、あなたのプログラムは将来破損する可能性があります。 :)

COMの表示オブジェクトを作成するための簡単な方法は、「COMの表示」と「COMの相互運用機能の登録」のチェックですが、お勧めしません。これにより、表示されているすべてのクラスのオーバーヘッドが追加されます。

2

ComClass属性はVisual Basic固有のもので、.NETコードでのCOMオブジェクトの作成を簡素化するためのものです。コンパイラがこの属性を見ると、C#で手作業で行わなければならない退屈な作業があります。要約すると、COMオブジェクトを作成するためのVisual Basicコードのショートカットです。

ここでは、これはC#で同じことをやっ上で提供するもので素晴らしい記事です:

2

VB.NETで自動的ComClass属性とGUIDを生成しますか?

はい、VB.NET COMClassテンプレートを使用してクラスを作成すると、COMClassAttributeとそのGUIDが自動的に生成されます。

Detail in MSDN セクション「COMクラステンプレートを使用してCOMオブジェクトを作成する」

関連する問題