Esto lo acercará bastante, y lo uso en producción y nunca he tenido una colisión. Sin embargo, si miras al constructor para obtener un guid en reflector, verás todas las comprobaciones que hace.
public static bool GuidTryParse(string s, out Guid result)
{
if (!String.IsNullOrEmpty(s) && guidRegEx.IsMatch(s))
{
result = new Guid(s);
return true;
}
result = default(Guid);
return false;
}
static Regex guidRegEx = new Regex("^[A-Fa-f0-9]{32}$|" +
"^({|\\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\\))?$|" +
"^({)?[0xA-Fa-f0-9]{3,10}(, {0,1}[0xA-Fa-f0-9]{3,6}){2}, {0,1}({)([0xA-Fa-f0-9]{3,4}, {0,1}){7}[0xA-Fa-f0-9]{3,4}(}})$", RegexOptions.Compiled);
En concreto, un GUIDConverter, que se construye en. Http://msdn.microsoft.com/en -us/library/system.componentmodel.guidconverter.aspx –
TypeDescriptor.GetConverter (typeof (Guid)) – leppie
@leppie ¿Puede decirme los pros y los contras de usar GUID como cadena en lugar de usar como GUIA de DataTyps – cracker