Imports System Imports System.Runtime.InteropServices ' Guid for the interface IMyInterface. <Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")> _ Interface IMyInterface Sub MyMethod() End Interface ' Guid for the coclass MyTestClass. <Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")> _ Public Class MyTestClass Implements IMyInterface ' Run regasm on this assembly to create .reg and .tlb files. ' Reg file can be used to register this coclass in the registry. ' Tlb file will be used to do interop. Public Sub MyMethod() Implements IMyInterface.MyMethod End Sub Public Shared Sub Main() ' Example addresses the following in System.Runtime.InterOpServices.GuidAttribute. ' How to specify the attribute on interface/coclass. ' Retrieve the GuidAttribute from an interface/coclass. ' Value property on GuidAttribute class. ' Example addresses the following in System.Guid. ' Constructor Guid(string). ' Constructor Guid(ByteArray). ' Equals. ' Operator ==. ' CompareTo. Dim IMyInterfaceAttribute As Attribute = Attribute.GetCustomAttribute(GetType(IMyInterface), GetType(GuidAttribute)) ' The Value property of GuidAttribute returns a string. System.Console.WriteLine("IMyInterface Attribute: " + CType(IMyInterfaceAttribute, GuidAttribute).Value) ' Using the string to create a guid. Dim myGuid1 As New Guid(CType(IMyInterfaceAttribute, GuidAttribute).Value) ' Using a byte array to create a guid. Dim myGuid2 As New Guid(myGuid1.ToByteArray()) ' Equals is overridden and so value comparison is done though references are different. If myGuid1.Equals(myGuid2) Then System.Console.WriteLine("myGuid1 equals myGuid2") Else System.Console.WriteLine("myGuid1 not equals myGuid2") End If ' Equality operator can also be used to determine if two guids have same value. If myGuid1.ToString() = myGuid2.ToString() Then System.Console.WriteLine("myGuid1 == myGuid2") Else System.Console.WriteLine("myGuid1 != myGuid2") End If ' CompareTo returns 0 if the guids have same value. If myGuid1.CompareTo(myGuid2) = 0 Then System.Console.WriteLine("myGuid1 compares to myGuid2") Else System.Console.WriteLine("myGuid1 does not compare to myGuid2") End If System.Console.ReadLine() 'Output: 'IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4 'myGuid1 equals myGuid2 'myGuid1 == myGuid2 'myGuid1 compares to myGuid2 End Sub End Class |