2012年12月18日
川俣晶の縁側ソフトウェア技術雑記total 5712 count

珍しいC#のdynamicの利用例

Written By: 川俣 晶連絡先

 Windows LiveのSkyDriveのサンプルで見つけた珍しいC#のdynamicの利用例。

        private async void LoadProfile()

        {

            LiveConnectClient client = new LiveConnectClient(App.Session);

            LiveOperationResult liveOpResult = await client.GetAsync("me");

            dynamic dynResult = liveOpResult.Result;

            App.UserName = dynResult.name;

            LoadData();

        }

 liveOpResult.ResultはIDictionary<string,object>型ですが、IDictionary<string,object>型だから使えるコーディングパターン……というわけではなく、dynamic型でdynResult.nameと書いて通るようなオブジェクトを返しているから可能になるコード……のようですね。

 たぶんdynamicを使わないなら以下のコードと等価でしょう。

        private async void LoadProfile()

        {

            LiveConnectClient client = new LiveConnectClient(App.Session);

            LiveOperationResult liveOpResult = await client.GetAsync("me");

            //dynamic dynResult = liveOpResult.Result;

            //App.UserName = dynResult.name;

            App.UserName = (string)liveOpResult.Result["name"];

            LoadData();

        }

 ある程度以上は踏み込んでいないので良く分かりませんけどね!

感想 §

 書き換え後はキャストが入って間延びした……と思ったら、よく考えると書き換え前より短いですよね。いちいちdynamic型の変数も必要としていないし。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2013年
02月
25日
C#において、""とstring.Emptyのニュアンスの違いは何か
3days 0 count
total 6775 count
【技術雑記】の前のコンテンツ
2012年
12月
18日
Live SDK 5.3についてのメモ
3days 0 count
total 4103 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20121218114054
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.