C#で簡易テンプレート処理
2007-09-17


( row ) ); } } // テストデータのDataTableを作成 private static DataTable createTable() { DataTable table = new DataTable(); table.Columns.AddRange( new DataColumn[] { new DataColumn( "ItemName", typeof(string) ), new DataColumn( "UnitPrice", typeof(decimal) ), new DataColumn( "ItemNum", typeof(int) ), new DataColumn( "Price", typeof(decimal), "UnitPrice * ItemNum" ) } ); foreach(object[] data in new object[][] { new object[] { "HDD (40GB)", 1980, 1 }, new object[] { "ボールマウス", 400, 3 }, new object[] { "キーボード (白)", 980, 3 } } ) { DataRow row = table.NewRow(); row.ItemArray = data; table.Rows.Add( row ); } return table; } // Hashtableのテストデータを作成 private static Hashtable createHashtable() { Hashtable hash = new Hashtable(); hash["ItemName"] = "HDD (80GB)"; hash["UnitPrice"] = 5000; hash["ItemNum"] = 2; hash["Price"] = 10000; return hash; } } }

改造など

いまのとこIDictionaryとDataRowの受け取りをオーバーロードで実装しているため、メソッドシグニチャを除けばまったく同じコードでかなりみっともないが、TypeをキーにしたHashtableに、テンプレート変数名から値を取り出すメソッドをくるんだdelegateを登録するように改造したりすれば他の型(ってちょっと思いつかないが)への対応もむずかしくないかと。

でも、NVelocityを先に見つけてりゃこんなんつくらんかったな。


戻る
[.NET]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット