Можно ли сделать оператор switch для условных выражений? - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу выполнить оператор switch для условного значения, в настоящее время мой оператор выглядит следующим образом:

switch (property)
  {
    case JToken token when (Schemas.IsNumericProperty(token)):
      return token.ToObject<int>();
    case JToken token when (Schemas.IsStringProperty(token)):
      return token.ToObject<string>();
    case JToken token when (Schemas.IsCollectionProperty(token)):
      return token.ToObject<string[]>();
    case JToken token when (Schemas.IsDependencyProperty(token)):
      return token.ToObject<KeyValue[]>();
    default:
      return property.ToObject<object>();
  }

Однако значение свойства уже равно JToken, есть ли способочистить это, чтобы быть короткий код?Я знаю, что мог бы просто сделать серию if заявлений, которые могли бы быть намного чище и эффективнее?

Спасибо за помощь!

1 Ответ

0 голосов
/ 27 февраля 2019

Я думаю, вы бы искали вот так:

JToken jToken = JToken.Parse("your json");

switch (jToken.Type)
{
     case JTokenType.Integer:
        return jToken.ToObject<int>();

     case JTokenType.String:
        return jToken.ToObject<string>();

     case JTokenType.Array:
        return jToken.ToObject<string[]>();

     default:
        return jToken.ToObject<object>();
}

JToken.Type имеет тип JTokenType Перечисление, которое позволяет вам легко определить тип вашего токена.

Вы можете прочитать больше о JTokenType Enumeration

...