Лучший способ определить, будет ли доменное имя допустимым в файле «hosts»?

ОкнаФайл хостов позволяет связать IP симя хоста это имеет гораздо большую свободу, чем обычное доменное имя в Интернете. Я хотел бы создать функцию, которая определяет, будет ли данное имя допустимым именем файлового домена "host".

На основеэтот ответ и экспериментируя, что работает, а что нет, я придумал эту функцию:

private static bool IsValidDomainName(string domain)
{
    if (String.IsNullOrEmpty(domain) || domain.Length > 255)
    {
        return false;
    }

    Uri uri;

    if (!Uri.TryCreate("http://" + domain, UriKind.Absolute, out uri))
    {
        return false;
    }

    if (!String.Equals(uri.Host, domain, StringComparison.OrdinalIgnoreCase) || !uri.IsWellFormedOriginalString())
    {
        return false;
    }

    foreach (string part in uri.Host.Split('.'))
    {
        if (part.Length > 63)
        {
            return false;
        }
    }

    return true;
}

Он также имеет то преимущество, что он должен работать с именами Unicode (где базовое регулярное выражение не будет работать).

Есть ли лучший / более элегантный способ сделать это?

ОБНОВИТЬ: По предложениюБилл,Uri.CheckHostName Метод почти делает то, что я хочу, но он не учитывает имена хостов, такие как «-test», которые Windows допускает в файле «hosts». Я бы выделил часть «-», но я обеспокоен тем, что есть и более особые случаи.

Ответы на вопрос(2)

Ваш ответ на вопрос