2012-01-03 11 views
6

この属性がクラスに追加された理由を理解しようとしています。 GoogleはCOM関連の資料を検索しているにすぎません。アプリケーションはCOM経由で何もしません。System.Runtime.InteropServices.GuidAttributeはCOM相互運用以外のものに使用されます

このチェックインコメントは、啓発を提供していません(これは、他のものとは一見して関連性のないように見えます)。変更のどちらかの側で数日間私の電子メールトラフィックを読んでいなかった。

+0

これは単なるメタデータです。 CLRはCOM Interopにこれを使用します。他のアトリビュートのように独自の目的に使用することもできます(代わりに独自のアトリビュートを作成することをお勧めします)。 – vcsjones

答えて

5

.NETの型には、属性を使用するかどうかにかかわらず常にGuidがあります。 Type.GUIDプロパティで使用できます。 CLRはタイプ定義から1つを自動生成し、生成されるマシンに関係なく、同じタイプのGuidが同一であることを保証します。これは、Guidが生成される通常の方法とは非常に異なる動作であることに注意してください。

自動生成されたGUIDを無効にする場合は、[Guid]属性のみを使用します。既存のCOMインターフェイスまたはコクラスに一致する宣言を取得するためにCOM相互運用シナリオでのみ便利です。常に[ComVisible]または[ComImport]属性の近くにある必要があります。

1

COM相互運用性のためにGuid属性が導入されましたが、あなたや他の第三者が他の用途のために再利用することを妨げるものは何もありません。

属性は、通常、他のコードでも使用できる追加情報(「メタデータ」)を提供します。

+0

True;外に何かを悪用しようとすると、ソースやチェックインのコメントの理由を説明しているテキストの段落はほとんど間違いなく残っています。私の疑惑は、間違ったスタートからの削除されていないジャンクコードのビットであるということです。私は最初に除外する必要があった属性に対して他に正当な使用がないことを確認したかったのです。 –