スイッチ/ケースコードをリファクタリングする方法はありますか?JTokenTypeに基づいたJTokenのキャストを簡略化する方法
property.Value
はJToken
opportunity
ある
(それが許容できるC#のではありません)私は成功せずにアプローチを以下で試してみた(辞書に似て)CRM DynamicsのエンティティType target = property.Value.Type.GetType(); opportunity[property.Key] = property.Value.Value<target>();
です
ここに私が試しているコードですmplify。 (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をスロー:
「動的」にキャスティングするとどうなるでしょう: 'opportunity [property.Key] = property.Value.Value();'? –
残念ながら、それはCRM Dynamicsによって予想されるタイプに正しくキャスティングされていません。あなたの提案で質問を更新する – camous