Enak mana baca-nya.
//using System.Linq.Expressions;
var param = Expression.Parameter(typeof(string), "p");
var methodInfo = typeof(Console).GetMethod("WriteLine", new[] { typeof(string) });
var call = Expression.Call(methodInfo, param);
var cwl = Expression.Lambda<Action<string>>(call, param).Compile();
cwl("Hello World !");
var cwl2 = Expression.Lambda<Action<string>>(
Expression.Call(typeof(Console).GetMethod("WriteLine", new[] { typeof(string) }), param), param).Compile();
cwl2("Hello Again !");
Kebanyakan orang yang suka meng-cryto-kan code (biar di pikir pinter
kali ya) tentu akan senang dengan model yang 'cwl2'.
Masalah akan timbul bila kita akan re-visit code itu --
otak mesti me-refesh lagi.
Dan juga akan bermasalah bila bekerja dalam team terutama new member.
Untuk membuat code lebih mudah di baca memerlukan effort lebih banyak, jadi kita orang yang melakukan itu adalah better developer.
Karena yang di butuhkan adalah hasil dari code itu bukan 'keindahan' -- buat code addicted -- dari code-nya.
Code diatas merupakan sample test dari current svn mono untuk men-support linq. Menggunakan gmcs untuk meng-compile-nya.
Dari sini kita bisa lihat mono cukup mendekati fitur-fitur yang ada di .Net 3.5 . menarik bukan.