Як перевірити, що рядок uri є дійсним (що ви можете подати його до конструктора Uri)?
Поки що у мене є лише таке, але зі зрозумілих причин я віддаю перевагу менш грубому способу:
Boolean IsValidUri(String uri)
{
try
{
new Uri(uri);
return true;
}
catch
{
return false;
}
}
Я спробував Uri.IsWellFormedUriString, але, здається, не подобається все, що можна кинути на конструктор. Наприклад:
String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));
Результатом буде:
Uri.IsWellFormedUriString says: False
IsValidUri says: True
Оновлення / відповідь
Конструктор Uri використовує тип Absolute за замовчуванням. Це спричиняло розбіжності, коли я намагався використовувати Uri.TryCreate та конструктор. Ви отримуєте очікуваний результат, якщо ви відповідаєте UriKind як для конструктора, так і для TryCreate.