我期待在条件值上执行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
陈述,这可能会更清洁,更有效率?
谢谢您的帮助!
我想你会像这样寻找
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
Enumeration,可让您轻松识别令牌的类型。
您可以阅读更多关于JTokenType Enumeration
的信息