En el siguiente ejemplo de código, se muestra la forma de asociar y leer un objeto Guid como un atributo en una interfaz o clase definida por el usuario.
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
using System;
using System.Runtime.InteropServices;
// Guid for the interface IMyInterface.
[Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")]
interface IMyInterface
{
void MyMethod();
}
// Guid for the coclass MyTestClass.
[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public class MyTestClass : 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 void MyMethod() {}
public static void Main( string []args )
{
// 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.
Attribute IMyInterfaceAttribute = Attribute.GetCustomAttribute( typeof( IMyInterface ), typeof( GuidAttribute ) );
// The Value property of GuidAttribute returns a string.
System.Console.WriteLine( "IMyInterface Attribute: " + ((GuidAttribute)IMyInterfaceAttribute).Value );
// Using the string to create a guid.
Guid myGuid1 = new Guid( ((GuidAttribute)IMyInterfaceAttribute).Value );
// Using a byte array to create a guid.
Guid myGuid2 = new Guid ( myGuid1.ToByteArray() );
// Equals is overridden and so value comparison is done though references are different.
if ( myGuid1.Equals( myGuid2 ) )
System.Console.WriteLine( "myGuid1 equals myGuid2" );
else
System.Console.WriteLine( "myGuid1 not equals myGuid2" );
// Equality operator can also be used to determine if two guids have same value.
if ( myGuid1 == myGuid2 )
System.Console.WriteLine( "myGuid1 == myGuid2" );
else
System.Console.WriteLine( "myGuid1 != myGuid2" );
// CompareTo returns 0 if the guids have same value.
if ( myGuid1.CompareTo( myGuid2 ) == 0 )
System.Console.WriteLine( "myGuid1 compares to myGuid2" );
else
System.Console.WriteLine( "myGuid1 does not compare to myGuid2" );
System.Console.ReadLine();
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
}
}
using namespace System;
using namespace System::Runtime::InteropServices;
// Guid for the interface IMyInterface.
[Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")]
public interface class IMyInterface
{
public:
void MyMethod();
};
// Guid for the coclass MyTestClass.
[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public ref class MyTestClass: public IMyInterface
{
public:
// 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.
virtual void MyMethod(){}
};
int 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.
Attribute^ IMyInterfaceAttribute = Attribute::GetCustomAttribute( IMyInterface::typeid, GuidAttribute::typeid );
// The Value property of GuidAttribute returns a string.
System::Console::WriteLine( String::Concat( "IMyInterface Attribute: ", (dynamic_cast<GuidAttribute^>(IMyInterfaceAttribute))->Value ) );
// Using the string to create a guid.
Guid myGuid1 = Guid(dynamic_cast<GuidAttribute^>(IMyInterfaceAttribute)->Value);
// Using a byte array to create a guid.
Guid myGuid2 = Guid(myGuid1.ToByteArray());
// Equals is overridden and so value comparison is done though references are different.
if ( myGuid1.Equals( myGuid2 ) )
System::Console::WriteLine( "myGuid1 equals myGuid2" );
else
System::Console::WriteLine( "myGuid1 not equals myGuid2" );
// Equality operator can also be used to determine if two guids have same value.
if ( myGuid1 == myGuid2 )
System::Console::WriteLine( "myGuid1 == myGuid2" );
else
System::Console::WriteLine( "myGuid1 != myGuid2" );
// CompareTo returns 0 if the guids have same value.
if ( myGuid1.CompareTo( myGuid2 ) == 0 )
System::Console::WriteLine( "myGuid1 compares to myGuid2" );
else
System::Console::WriteLine( "myGuid1 does not compare to myGuid2" );
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
}
import System.*;
import System.Runtime.InteropServices.*;
// Guid for the interface IMyInterface.
/** @attribute Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")
*/
interface IMyInterface
{
void MyMethod();
} //IMyInterface
// Guid for the coclass MyTestClass.
/** @attribute 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 void MyMethod()
{
} //MyMethod
public static void main(String[] args)
{
// 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.
Attribute iMyInterfaceAttribute =
Attribute.GetCustomAttribute(IMyInterface.class.ToType(),
GuidAttribute.class.ToType());
// The Value property of GuidAttribute returns a string.
System.Console.WriteLine("IMyInterface Attribute: "
+ ((GuidAttribute)(iMyInterfaceAttribute)).get_Value());
// Using the string to create a guid.
Guid myGuid1 =
new Guid(((GuidAttribute)(iMyInterfaceAttribute)).get_Value());
// Using a byte array to create a guid.
Guid myGuid2 = new Guid(myGuid1.ToByteArray());
// Equals is overridden and so value comparison is done though
// references are different.
if (myGuid1.Equals(myGuid2)) {
System.Console.WriteLine("myGuid1 equals myGuid2");
}
else {
System.Console.WriteLine("myGuid1 not equals myGuid2");
}
// Equality operator can also be used to determine if two
// guids have same value.
if (myGuid1 == myGuid2) {
System.Console.WriteLine("myGuid1 == myGuid2");
}
else {
System.Console.WriteLine("myGuid1 != myGuid2");
}
// CompareTo returns 0 if the guids have same value.
if (myGuid1.CompareTo(myGuid2) == 0) {
System.Console.WriteLine("myGuid1 compares to myGuid2");
}
else {
System.Console.WriteLine("myGuid1 does not compare to myGuid2");
}
System.Console.ReadLine();
} //main
} //MyTestClass
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
import System;
import System.Runtime.InteropServices;
// Guid for the interface IMyInterface.
Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4") interface IMyInterface
{
function MyMethod();
}
// Guid for the coclass MyTestClass.
public Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8") 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 function MyMethod() {}
public static function 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.
var IMyInterfaceAttribute : Attribute = Attribute.GetCustomAttribute(Type.GetType("IMyInterface"), GuidAttribute);
// The Value property of GuidAttribute returns a string.
System.Console.WriteLine( "IMyInterface Attribute: " + (GuidAttribute(IMyInterfaceAttribute)).Value );
// Using the string to create a guid.
var myGuid1 : Guid = new Guid( (GuidAttribute(IMyInterfaceAttribute)).Value );
// Using a byte array to create a guid.
var myGuid2 : Guid = new Guid ( myGuid1.ToByteArray() );
// Equals is overridden and so value comparison is done though references are different.
if ( myGuid1.Equals( myGuid2 ) )
System.Console.WriteLine( "myGuid1 equals myGuid2" );
else
System.Console.WriteLine( "myGuid1 not equals myGuid2" );
// Equality operator can also be used to determine if two guids have same value.
if ( myGuid1 == myGuid2 )
System.Console.WriteLine( "myGuid1 == myGuid2" );
else
System.Console.WriteLine( "myGuid1 != myGuid2" );
// CompareTo returns 0 if the guids have same value.
if ( myGuid1.CompareTo( myGuid2 ) == 0 )
System.Console.WriteLine( "myGuid1 compares to myGuid2" );
else
System.Console.WriteLine( "myGuid1 does not compare to myGuid2" );
System.Console.ReadLine();
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
}
}
MyTestClass.Main();