2010-09-21 4 views
16

He recogido algunos códigos C# recientemente y una de las clases tiene un atributo Guid presente encima. No entiendo qué es esto o para qué se usa.¿Cuál es el atributo Guid que aparece sobre las clases en C#?

¿Puede alguien darme un resumen de lo que es, o simplemente dirigirme hacia algunos artículos que brindan más información al respecto?

Gracias!

+2

¿Se ve así? http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.guidattribute.aspx – Tx3

+0

Sí, se ve así. ¿Hay alguna diferencia entre Guid y GuidAttribute? – Andrei

+3

al aplicar un atributo con "[]" puede dejar fuera el "Atributo" al final del nombre del tipo. Asume que está allí. Como tal, son lo mismo. – Rangoric

Respuesta

8

Es el identificador COM que representa la clase en cuestión. La clase está diseñada para interoperabilidad COM.

7

Guid (Identificador global único) se utiliza para identificar su componente por el mundo exterior. Cuando escribe un proyecto que se va a usar como COM (Modelo de Objetos Componentes), tendrá que dar un nombre único. Por este motivo, debe aplicar el atributo GUID.

Puedes leer más sobre esto aquí.

GUIDAttributeClass

8

Es posible que desee echar un vistazo a la clase ComVisibleAttribute para aprender más acerca de las maneras de hacer que las clases administradas a disposición de código no administrado.

El [Guid] es el equivalente exacto al .NET Type.AssemblyQualifiedName. Como

System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5561934e089 

Con la distinción obvia de que el nombre de tipo .NET es más fácil de leer por un ser humano. Es necesario permitir que un programa descubra qué DLL necesita cargarse para usar un tipo. En el caso de .NET, los ensamblajes (normalmente) se encuentran al enumerar el GAC. Está basado en archivos.

COM sin embargo, utiliza el registro. Después de ese ensamblado cuyo código fuente analizó se compila y registra, puede encontrar el [Guid] en el registro. Encienda regedit.exe y navegue hasta HKLM\Software\Classes\CLSID\{guid}. Verá los valores de clave de registro que utiliza el tiempo de ejecución para cargar el CLR y el ensamblaje.

+0

Actualmente estoy jugando con la exposición de mi clase .NET a COM, y he registrado mi ensamblaje. ¿Puede explicar por qué el GUID que he especificado en GuidAttribute no aparece en HKLM \ Software \ Classes \ CLSID \? – Dave

+0

Buscar en el lugar equivocado es la explicación típica. Como 'HKLM \ Software \ Wow6432Node \ Classes \ CLSID', el hogar de los servidores COM de 32 bits. –

Cuestiones relacionadas