0

ユーザーが持っているすべてのカレンダーを取得しようとしています。私が使用しているコードは次のとおりです。

LiveConnectClient liveClient = new LiveConnectClient( App.Session );
LiveOperationResult operationResult = await liveClient.GetAsync( "me/calendars" );
dynamic result = operationResult.Result; 

デバッガーで結果を調べると、カレンダー(キーと値)が表示されます。ただし、このDynamicDictionaryから情報を抽出する際に問題が発生します。

4

2 に答える 2

0

それはただの辞書です。次のことができるはずです。

var item = result[key];
于 2012-11-14T22:10:46.003 に答える
0

私はなんとか問題を解決することができました、そしてそれをするためのコード(いくつかのデバッグメッセージで)は次の通りです:

try
{
    LiveConnectClient liveClient = new LiveConnectClient( App.Session );
    LiveOperationResult operationResult = await liveClient.GetAsync( "me/calendars" );
    dynamic result = operationResult.Result;

    List<object> data = null;
    IDictionary<string, object> calendar = null;

    string msg = "Calendar names: ";
    Debug.WriteLine( msg );

    if ( operationResult.Result.ContainsKey( "data" ) )
    {
        data = (List<object>)operationResult.Result[ "data" ];
        for ( int i = 0 ; i < data.Count ; i++ )
        {
            calendar = (IDictionary<string, object>)data[ i ];
            if ( calendar.ContainsKey( "name" ) )
            {
                string Name = (string)calendar[ "name" ];
                string ID   = (string)calendar[ "id" ];
                msg = string.Format( "Name = {0}, ID = {1}", Name, ID );
                Debug.WriteLine( msg );
            }
        }
    }
}
catch ( LiveConnectException exception )
{
    Debug.WriteLine( "Error getting calendar info: " + exception.Message );
}
于 2012-11-15T06:37:01.573 に答える