2012-01-03 15 views
6

Estoy intentando averiguar por qué se agregó este atributo a una clase. Google solo está buscando material relacionado con COM cuando lo busco; pero la aplicación no hace nada a través de COM.Se usa System.Runtime.InteropServices.GuidAttribute para cualquier cosa, excepto la interoperabilidad COM

El comentario de verificación no proporciona ninguna aclaración (se refirió a los otros cambios, aparentemente no relacionados, realizados al mismo tiempo); ni tampoco leí mi tráfico de correo electrónico durante varios días en ninguno de los lados del cambio.

+0

Son solo metadatos. El CLR lo usará para COM Interop; pero podría usarlo para sus propios fines como cualquier otro atributo (aunque recomendaría crear su propio atributo en su lugar). – vcsjones

Respuesta

5

Un tipo en .NET siempre tiene un Guid si usa el atributo o no. Disponible a través de la propiedad Type.GUID. El CLR autogenera uno a partir de la definición del tipo, asegurando que los tipos idénticos tengan guías idénticas sin importar en qué máquina se genere. Tenga en cuenta que este es un comportamiento muy diferente de la forma habitual en que se genera un Guid.

Solo utiliza el atributo [Guid] si desea anular el guid generado automáticamente. Lo cual solo es útil en escenarios de interoperabilidad COM para obtener una declaración que coincida con una interfaz COM existente o coclass. Siempre debe estar cerca de un atributo [ComVisible] o [ComImport].

1

El atributo Guid se introdujo para la interoperabilidad COM, pero no hay nada que impida que usted (o cualquier otro tercero) lo reutilice para otros usos.

Los atributos, en general, proporcionan información adicional ("metadatos") que pueden ser utilizados por otros juegos de código pero de cualquier forma.

+0

Verdadero; pero si estaba abusando de algo fuera de su uso previsto, casi con certeza habría dejado un párrafo de texto explicando por qué lo estaba haciendo, ya sea en los comentarios de fuente o de registro. Mi sospecha es que es un poco de código basura no recuperado de un comienzo en falso. Quería asegurarme de que no había ningún otro uso legítimo para el atributo que necesitaba descartar primero. –

Cuestiones relacionadas