Я не нашел метод TryParse для Guid. Мне интересно, как другие обрабатывают преобразование guid в строчном формате в тип guid.
Guid Id;
try
{
    Id = new Guid(Request.QueryString["id"]);
}
catch
{
    Id = Guid.Empty;
}
Я не нашел метод TryParse для Guid. Мне интересно, как другие обрабатывают преобразование guid в строчном формате в тип guid.
Guid Id;
try
{
    Id = new Guid(Request.QueryString["id"]);
}
catch
{
    Id = Guid.Empty;
}
new Guid(string)
Вы также можете использовать TypeConverter.
используйте такой код:
new Guid("9D2B0228-4D0D-4C23-8B49-01A698857709")
вместо "9D2B0228-4D0D-4C23-8B49-01A698857709" вы можете установить строковое значение
Guid.TryParse()
https://msdn.microsoft.com/de-de/library/system.guid.tryparse(v=vs.110).aspx
или
Guid.TryParseExact()
https://msdn.microsoft.com/de-de/library/system.guid.tryparseexact(v=vs.110).aspx
в .NET 4.0 (или 3.5?)
Это поможет вам приблизиться, и я использую его в производстве и никогда не сталкивался. Однако, если вы посмотрите на конструктор для указателя в отражателе, вы увидите все его проверки.
 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);
К сожалению, нет эквивалента TryParse(). Если вы создаете новый экземпляр System.Guid и передаете строковое значение в, вы можете поймать три возможных исключения, которые оно выбрало бы, если оно недействительно.
Это:
Я видел некоторые реализации, где вы можете делать регулярное выражение в строке перед созданием экземпляра, если вы просто пытаетесь его проверить и не создавать.
Если все, что вам нужно, это очень простая проверка ошибок, вы можете просто проверить длину строки.
              string guidStr = "";
              if( guidStr.Length == Guid.Empty.ToString().Length )
                 Guid g = new Guid( guidStr );