Est-il un GUID.TryParse() dans .NET 3.5?

Mise à JOUR

Guid.TryParse est disponible dans .NET 4.0

MISE À JOUR DE FIN

Évidemment il n'y a pas de public GUID.TryParse() dans .NET CLR 2.0.

Donc, j'étais à la recherche dans les expressions régulières [aka googler pour trouver un] et à chaque fois j'ai trouvé un il y avait un argument de chauffage dans la section des commentaires sur Une RegEx ne fonctionne pas, utiliser des RegEx B. Alors quelqu'un voudrais écrire des Regex C yadda yadda

De toute façon, Ce que j'ai décidé de faire, c'était cela, mais je me sens mal à ce sujet.

public static bool IsGuid (string possibleGuid) {

    try {
      Guid gid = new Guid(possibleGuid);
      return true;    
    } catch (Exception ex) {
      return false;
    }
}

Évidemment, je n'aime pas vraiment ce depuis qu'il a été foré en moi depuis le premier jour, afin d'éviter de jeter des exceptions si vous pouvez defensibly code autour d'elle.

Personne ne sait pourquoi il n'y a pas de public Guid.TryParse() dans le .NET Framework?

Quelqu'un a une réelle Expression Régulière qui va travailler pour tous les Guid?

  • Le try catch technique peut être mauvais si cette méthode est appelée lots (dans une boucle) et il est fort probablement de l'exception levée. Une fois, j'ai dressé le portrait d'une ASP.NET 1.1 application qui a fait ceci et après la mise à niveau vers .NET 2.0 est de type int.TryParse, la performance a augmenté de près de 30% (il était en train de faire beaucoup de int.Analyser les appels!).
  • Ouais, ce ne sera pas une boucle. Fondamentalement, j'ai été faire des erreurs, de la "echec de la conversion de type uniqueidentifier" etc.. donc je voulais faire quelque chose de plus que de simplement vérifier si la chaîne est passé était vide ou non.
  • string Id = Guid.NewGuid().ToString();