2017-05-24 48 views
0

Microsoft Dynamics CRM APIを使用して、CRMによって与えられたEntityCollectionから得られた情報をフォームに入力するプログラムを作成しています。私の問題は、エンティティがKeyValuePair<string, object>で構成されており、これが頭痛の原因です。 kvps内のいくつかのオブジェクトは実行時にタイプOptionSetValueであり、OptionSetValueに追加のアクセサが必要なため、実際に値にアクセスする方法が必要です。プログラムがコンパイルされますが、それはから変換しようとしますので、実行時にexpectionがスローされます上記の例ではオブジェクト型をMicrosoft.Xrm.Sdk.OptionSetValue型に変換する

foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList()) 
{ 
    int theResult = thePair.Value; 
} 

:ここ

は私の問題(「E」であるエンティティ)を実証するためのいくつかのサンプルコードです OptionSetValue~ int32。 C#コンパイラは thePairが実行時までタイプ OptionSetValueであることを知っていないので、 .Valueアクセサは私が必要な値を返します。このシナリオでは

foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList()) 
{ 
    int theResult = thePair.Value.Value; 
} 

、しかし:

は、ここで私は何とか達成したいものですオブジェクトタイプに.Valueのメンバーがないため、コンパイルされません。

私の問題についてのご意見やご要望はありますか?

答えて

0

この記事の後5分以内にこの問題を修正したので、これをすべて入力してもわかりやすくなりました。単純に型キャストを使用することができます(OptionSetValue)

foreach (KeyValuePair<string, object> thePair in e.Attributes.ToList()) 
{ 
    int theResult = (OptionSetValue)thePair.Value.Value; 
}