2008-01-01から1ヶ月間の記事一覧
前回 ではクラス間の依存関係の切り離し方とSpring.NETの役割について説明しました。 では、そもそもクラス間の依存関係を切り離す事にどのような利点があるのでしょうか?インターフェースで分離する事による利点でよく言われるのは多態性(ポリモーフィズ…
なんかいまいちSpring.NETの認知度というか使用率が低いみたいなので、ここらで一度Spring.NETを知ってもらうために入門的なエントリでも書いてみることにする。 普段当たり前のように使っているので、今一度何故使うのかという事を考えてみたいというのもあ…
2008-01-27 - 当面C#と.NETな記録 で紹介されていた次期C#の新機能(候補なのかな?)そのサンプルコードが↓これ static void Main(string[] args) { dynamic { object myDynamicObject = GetDynamicObject(); myDynamicObject.SomeMethod(); // call a meth…
前回途中で終わったParseExpressionメソッドを実装した。その前にそもそも何がしたいかというと、XlsWorksheetsクラスではワークシートを列挙する時、以下のようにWorksheetオブジェクトをラップしたXlsWorksheetクラスをインスタンス化して返していた。 for…
色々調べていてやっとこさ仕組みがわかってきたので、少し進める。まず、XlsWorksheetsクラスをIQueryProviderインターフェースを実装するように変更する。 XlsWorksheets.cs using System; using System.Linq; using System.Linq.Expressions; using System…
こんな処理があるとする。 static void Main() { var shared = "なんか"; var array = new [] { "100", "200" }; foreach(var s in array) { // shared と s を使って処理する。 } } このループ部分の処理が少しばかり複雑になったとして、この部分をメソッ…
対象とするExcelのバージョンはOffice 2003。事前にTlbimp.exeを使ってExcel.exeからRCWを作っておく。アセンブリ名はExcel.Interop、名前空間もExcel.Interopとしておく。まずはシートを列挙する機能から作る。クラス構造はだいたい↓こんな感じ XlsWorkbook…
いまいち、まだLINQの仕組みがよくわからない。whereやselectなどの演算子が対応する拡張メソッドにマップされたりするのはわかるけど、その式がどうやって(どこで?)SQLやらXPath(かどうかは知らないけど)やらに変換されているのかがわからない。じゃあ…
例えば以下のようなExcel、Word、PowerPointのファイル名の配列があるとする。 var fileNames = new [] { "200.xls", "100.doc", "300.ppt", "500.xls", "400.ppt", "600.ppt" }; この配列から格拡張子毎にリストに分けたいとする。Outputとして欲しいのは以…
VS2008からインテリセンスの候補リストを表示している時にCtrlキーを押すと候補リストが半透明になる。この機能を自分のアプリケーションでも使いたくなったので作ってみたら案外簡単にできたので、この機能を再利用可能なコンポーネントにまとめてみた。 Op…
C#3.0の匿名クラスってプロパティしか定義できないけど、プロパティの型をDelegateにすればメソッドみたいに振る舞うプロパティを定義できる事に気が付いた。 class Program { static void Main(string[] args) { var obj = new { Greet=(Func<string, string>)((name) => "H</string,>…
Code Craftを読んでいたら防御的プログラミングについての記述があったので、自分が普段やっている防御的プログラミングについて書いてみる。まずCode Craftで述べられている防御的プログラミングとは Code Craft P7 より 注意深く慎重を期したプログラミン…
最近オープンソースで作り始めた拙作のSpring.Extensionsライブラリ。以下のエントリで書いたコードを元にして作り始めたのだが、 Spring.NETでカスタム属性を使ったインジェクションを実現する - Architect Lifeこの機能を実装したら他に実装したい機能が思…
今までコードレビューというものをやった事が無い。コードの品質を上げる為には必要な事*1とはわかっているけど、スケジュール的な問題やそもそも自分が書いたコードをレビューできる人間がいないという事もあって、ほったらかしにしていた。そんな折、自分…