有什么解决方案可以以更好/更短的方式重构以下开关/案例代码?
property.Value
是JToken
opportunity
是一个CRM Dynamics实体(类似于字典)我尝试了以下方法,但未成功(C# Not Acceptable )
Type target = property.Value.Type.GetType();
opportunity[property.Key] = property.Value.Value<target>();
这是我要简化的代码。 (
JTokenType.Object
和JTokenType.Array
的处理方式不同。) switch (property.Value.Type)
{
case JTokenType.Boolean:
opportunity[property.Key] = property.Value.Value<bool>();
break;
case JTokenType.Date:
opportunity[property.Key] = property.Value.Value<DateTime>();
break;
case JTokenType.Integer:
opportunity[property.Key] = property.Value.Value<int>();
break;
case JTokenType.String:
opportunity[property.Key] = property.Value.Value<string>();
break;
case JTokenType.Guid:
opportunity[property.Key] = property.Value.Value<Guid>();
break;
}
我也按照@diiN_的建议尝试了此操作:
opportunity[property.Key] = property.Value.Value<dynamic>();
但是它抛出一个InvalidDataContractException:
最佳答案
您可以尝试使用以下方法来代替switch语句:
if (property.Value is JValue)
{
opportunity[property.Key] = ((JValue)property.Value).Value;
}
关于c# - 如何基于JTokenType简化JToken的类型转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38628460/