Почему Uri.TryCreate возвращает TRUE для Uri как mail: foo? - PullRequest
2 голосов
/ 21 марта 2011

зачем использовать метод Uri.TryCreate Я получаю BOOL TRUE, если URI отсутствует в Uri.Schema ??.

Здесь Uri.Schema из MSDN: http://msdn.microsoft.com/en-us/library/system.uri.scheme.aspx

Попробуйте дляНапример, строка "mail:foo" возвращает True, и я не понимаю, почему.

Есть идеи?Может быть, ошибка в MS Framework или, возможно, ошибка в моей голове: -)?

public static bool IsValidUriHttp(string uriString)
        {
            Uri test = null;
            return Uri.TryCreate(uriString, UriKind.Absolute, out test);
        }

Спасибо

1 Ответ

3 голосов
/ 21 марта 2011

Если вы видите Документацию , то там написано, что:

Свойство Scheme возвращает схему, использованную для инициализации экземпляра Uri. Это свойство не указывает , что схема, использованная для инициализации экземпляра Uri, была распознана .

Так что это просто показывает схему, независимо от того, была ли это известная схема или нет.

Также Uri.TryCreate() пытается создать Uri с любой схемой, которая, по его мнению, может быть в порядке.

Как будто я попробовал это и посмотреть, что я получил:

Uri t = null;
Uri.TryCreate("rwr:dsffs",UriKind.Absolute, out t).Dump();
t.Dump();

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...