2011-04-13 12 views
20

¿Son consistentes los GUID generados automáticamente para los tipos de C#? Por ejemplo, si obtengo un GUID para mi interfaz, IFoo (typeof(IFoo).GUID), la primera vez que ejecuto el programa, ¿obtendré ese mismo GUID cada vez que ejecuto el programa?¿Los GUID generados automáticamente para los tipos en .NET son consistentes?

Lo he probado localmente en mi máquina, y parece ser siempre el mismo, pero no estoy seguro si puedo confiar en que siempre será el mismo en todas las máquinas.

+0

¿Para qué? – BoltClock

+0

Creo que ese GUID no se está generando en absoluto, pero se generó una vez y, por lo tanto, siempre es el mismo. – Rhapsody

Respuesta

15

Ver: System.Type.GUID stability. Parece que la implementación actual del método depende de una llamada interna implementada por el CLR. A menos que Microsoft aclare los contratos para los Guids generados automáticamente (la documentación Type.GUID no menciona este problema), no confiaría en el comportamiento observado. Para estar seguro de la coherencia, recomiendo decorar explícitamente los tipos en cuestión con el GuidAttribute.

+0

Gracias. Estaba tratando de evitar definir explícitamente el GUID, pero parece que esa será la ruta más segura. – blachniet

+0

Si tienes curiosidad, [aquí está el código en el CLR] (https://github.com/dotnet/coreclr/blob/7f7d8276e65059a37001aaa5ce9af7e82249f4a0/src/vm/methodtable.cpp#L7377) que Type.GUID está remitiendo a . –

0

No está documentado, por lo que no confiaría completamente en ellos, dijo que la implementación puede o no cambiar en el futuro.

Cuestiones relacionadas