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

これから始めるSpring.NET その2

前回 ではクラス間の依存関係の切り離し方とSpring.NETの役割について説明しました。 では、そもそもクラス間の依存関係を切り離す事にどのような利点があるのでしょうか?インターフェースで分離する事による利点でよく言われるのは多態性(ポリモーフィズ…

これから始めるSpring.NET その1

なんかいまいちSpring.NETの認知度というか使用率が低いみたいなので、ここらで一度Spring.NETを知ってもらうために入門的なエントリでも書いてみることにする。 普段当たり前のように使っているので、今一度何故使うのかという事を考えてみたいというのもあ…

次期C#の新機能

2008-01-27 - 当面C#と.NETな記録 で紹介されていた次期C#の新機能(候補なのかな?)そのサンプルコードが↓これ static void Main(string[] args) { dynamic { object myDynamicObject = GetDynamicObject(); myDynamicObject.SomeMethod(); // call a meth…

LINQ to Excel を作ってみる その4

前回途中で終わったParseExpressionメソッドを実装した。その前にそもそも何がしたいかというと、XlsWorksheetsクラスではワークシートを列挙する時、以下のようにWorksheetオブジェクトをラップしたXlsWorksheetクラスをインスタンス化して返していた。 for…

LINQ to Excel を作ってみる その3

色々調べていてやっとこさ仕組みがわかってきたので、少し進める。まず、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 を使って処理する。 } } このループ部分の処理が少しばかり複雑になったとして、この部分をメソッ…

LINQ to Excel を作ってみる その2

対象とするExcelのバージョンはOffice 2003。事前にTlbimp.exeを使ってExcel.exeからRCWを作っておく。アセンブリ名はExcel.Interop、名前空間もExcel.Interopとしておく。まずはシートを列挙する機能から作る。クラス構造はだいたい↓こんな感じ XlsWorkbook…

LINQ to Excel を作ってみる その1

いまいち、まだLINQの仕組みがよくわからない。whereやselectなどの演算子が対応する拡張メソッドにマップされたりするのはわかるけど、その式がどうやって(どこで?)SQLやらXPath(かどうかは知らないけど)やらに変換されているのかがわからない。じゃあ…

どうでもいいコードの断片

例えば以下のようなExcel、Word、PowerPointのファイル名の配列があるとする。 var fileNames = new [] { "200.xls", "100.doc", "300.ppt", "500.xls", "400.ppt", "600.ppt" }; この配列から格拡張子毎にリストに分けたいとする。Outputとして欲しいのは以…

Formを半透明化するアニメーションコンポーネント

VS2008からインテリセンスの候補リストを表示している時にCtrlキーを押すと候補リストが半透明になる。この機能を自分のアプリケーションでも使いたくなったので作ってみたら案外簡単にできたので、この機能を再利用可能なコンポーネントにまとめてみた。 Op…

C#3.0の匿名クラスでメソッド(もどき)が定義できる件

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 より 注意深く慎重を期したプログラミン…

Python式を使ったオブジェクトのインジェクション

最近オープンソースで作り始めた拙作のSpring.Extensionsライブラリ。以下のエントリで書いたコードを元にして作り始めたのだが、 Spring.NETでカスタム属性を使ったインジェクションを実現する - Architect Lifeこの機能を実装したら他に実装したい機能が思…

コードレビュー事始め

今までコードレビューというものをやった事が無い。コードの品質を上げる為には必要な事*1とはわかっているけど、スケジュール的な問題やそもそも自分が書いたコードをレビューできる人間がいないという事もあって、ほったらかしにしていた。そんな折、自分…