Возможно ли как-то упростить реализацию блока if?

Хочу написать метод для распознавания типа команды, получаемую от клиента. Типы команд хранятся в enum ServerComands.Comands. Проблема в том, что если использовать реализацию через условный оператор, то выглядеть это будет ужасно, да и каждое пополнение командами в будущем будут вызывать только головную боль из-за редактирования, да и принцип "не повторяйся" тоже нарушает. Знаете ли Вы какие-нибудь трюки или способы упростить такой способ реализации.

Код:

private ServerComands.Comands RecognizeComand(string request)
{
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.BACK)))
    {
        return ServerComands.Comands.BACK;
    }
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.DISPOSE)))
    {
        return ServerComands.Comands.DISPOSE;
    }
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.FORWARD)))
    {
        return ServerComands.Comands.FORWARD;
    }
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.FULLSCREEN)))
    {
        return ServerComands.Comands.FULLSCREEN;
    }
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.PAUSE)))
    {
        return ServerComands.Comands.PAUSE;
    }
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.SHUTDOWN)))
    {
        return ServerComands.Comands.SHUTDOWN;
    }
    if (request.Contains(GetEnumStringValue(ServerComands.Comands.YOUTUBE)))
    {
        return ServerComands.Comands.YOUTUBE;
    }
    return ServerComands.Comands.None;
}

private string GetEnumStringValue(ServerComands.Comands comand)
{
    return comand.ToString();
}

Ответы (1 шт):

Автор решения: aepot

Enum.TryParse

private ServerComands.Comands RecognizeComand(string request)
{
    if (request?.Length > 0 && Enum.TryParse(request.Split()[0], true, out ServerComands.Comands command) && Enum.IsDefined(command))
        return command;
    else
        return ServerComands.Comands.None;
}

Команда будет распознана без учета регистра.

→ Ссылка