2011-05-01から1ヶ月間の記事一覧

Implementation of Enumerable.Cast

C#

中身見たら、えらく感動したので、備忘録的に。 何が凄いか 例外の吐き方がまず秀逸。無駄なコト一切してない。また、二段構えにしてるのも秀逸。 実装 public static IEnumerable<TResult> MyCast<TResult>(this IEnumerable source) { IEnumerable<TResult> enumerable = source as IE</tresult></tresult></tresult>…

 ExpressionTree内で動的にメンバプロパティ/フィールドを呼び出す方法

前回は、戻り値無しのMemberMethodの動的呼び出しをExpressionTreeの中でしようとしたとき、どーすれば良いのか?がテーマでした。 で、今回は、じゃあProperty/Fieldを呼び出すにゃどーすれば良いのか?がお題目。 dynamicで書いてみた場合 dynamicで今日の…

 ExpressionTree内で動的にメンバメソッドを呼び出す方法

通常のλを使った場合、以下のようなコードはコンパイルエラーになる。 Expression<Action<dynamic, int>> expr = (target, arg) => target.Call(arg); こんな風に書くと以下のようなコンパイラエラーが発生してそもそもコンパイルすらしてくれない。 式ツリーは、動的な操作を含む</action<dynamic,>…

ExpressionTreeとClojure

コトの始まり ふつーのDelegateでClojureが実現可能なのは、知ってたし、中でどーなってるのか大体理解してたけど、ExpressionTreeの場合、そもそも出来るのか?出来たとして、どーなるのか?て部分が気になったので何となく調べてみた。 使ったサンプルコー…