.NET

LINQ to Excel のその後

前に作ったLINQ to ExcelのCodePlexでの公開期限が迫ってきたので、やむを得ず公開します。CodePlex Archive前回から全く手をつけていないので、かなり中途半端になってますが興味のある方は見てやって下さい。また、そのうち続きを作るかもしれないです。

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

前回 の続きです。 宣言的インジェクション アプリケーションでよく必要になる処理でロギング処理というのがあります。.NETでロギング処理を行う場合、Traceクラスを使うこともありますが通常、log4netなどのロギングライブラリを使用することになるでしょう…

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

前回 までで、Spring.NETの基本的な機能について説明しました。 他にも様々な機能が用意されていますが、基本的に使用するのはobject要素とproperty要素の二つだけです。これだけを見るとSpring.NETというのはコードの中のnew宣言とプロパティ呼び出しを設定…

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

前回 では、フォームをDI コンテナに登録し、それを取り出して表示しました。今回はもう少し踏み込んでみます。まずはMainFormクラスのUIを以下のように変更します。 MainForm.cs テキストボックスをMultiline=true で貼り付け、[File] → [Save] というメニ…

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

それでは実際にSpring.NET を使ってみます。まずは以下のサイトから最新のバイナリをダウンロードしてきます。現在のバージョンは1.1 です。 Spring.NET - Application FrameworkダウンロードしたSpring.NET-1.1.zip を解凍するとできるフォルダの中の「bin\…

これから始める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この機能を実装したら他に実装したい機能が思…

Excite翻訳で英語を日本語に翻訳するスクリプト

Excite翻訳で英語を日本語に翻訳するスクリプトを作ってみた。 Eng-ToJapan.ps1 param([string]$word) if($word.Length -eq 0 -or $args[0] -eq "-?") { $commandName = [IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name) Write-Host @…

goo辞書を使って英単語を検索するスクリプト

PowerShellからgoo辞書を使いたくなったので作ってみた。 Find-Word.ps1 param([string]$word) if($args[0] -eq "-?" -or $word.Length -eq 0) { $commandName = [IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name) Write-Host @" Name:…

C#3.0でMix-in(みたいなの)ができる件

ある型Aからある型Bへの変換をする処理を書く時にはよくTypeConverter型を継承して型コンバータを書いている。型コンバータの利点は、.NET標準の機構であるというのもあるけど、変換元の型にカスタム属性で型コンバータを関連付ければ、 ↓こんな風に TypeCon…

.tfs-ignoreファイルを作るスクリプト

CodePlexにソースをアップするためにTeam Explorerを使っているが、これがとにかく使いにくい。普段SubclipseやTurtoiseSVNなんかの使い勝手のいいソース管理クライアントを使っているので、それらと比べるとどうしても見劣りしてしまう。Visual Studioのプ…

ASP.NET MVC Framework x Spring.NET

MVCフレームワークの調べ物はまだ途中だけど、ちょっと脱線してSpring.NETとの連携を考えてみる。Spring.NET自体はASP.NETに対応していてWebフォームへのインジェクションを実現している。しかしMVCフレームワークではWebフォームの役割は純粋なビュー(表示…

ASP.NET MVC Frameworkをさわってみる 2

前回はページの表示のみだったので、次はURLにクエリを渡してみる。単純に「Home/Index」というURLに対して、「message」というクエリ名で値を渡すとする。普通ならこのクエリの値はHttpRequestのQueryStringプロパティで取得するが、ASP.NET MVC Framework…

名前空間エイリアス

とあるCOMアプリケーションをラップするライブラリをC#で開発している。COMアプリケーションを扱うにはもちろんTlbimp.exeを使いRCWのアセンブリを生成し、それを参照するわけだが、このCOMアプリケーションには複数のバージョンが存在し(例えば2005、2006…

ASP.NET MVC Frameworkをさわってみる 1

最近TurboGearsをさわっていて、URLをコントローラクラスのメソッドにマップするというシンプルなアーキテクチャがすごく直感的で、すごい生産性が高くて衝撃を受けた。同じMVCパターンにしてもJavaのStrutsとPythonのTurboGearsでここまで違うのかと、設定…

Spring.NET Web Frameworkをさわってみる

Spring.NET 1.1がリリースされたので、さっそく気になる機能をさわってみる。 まずはSpring.NET Web Frameworkから。これはASP.NETでMVCパターンを使った開発をできるようにするもの。具体的には画面遷移の部分、いわゆるコントローラの部分が抽象化されてい…

NAnt 0.86 Beta1 Release

昨日のSpring.NETに続いて、.NET製のビルドツールであるNAntも最新版である0.86Beta1がリリースされた。NAnt - A .NET Build Toolこちらは.NET 3.5などの新しいプロットフォームへの対応のみ。 長いことほったらかされていたので、てっきり開発が中止された…

Spring.NET 1.1 Release

.NET製DIコンテナフレームワークSpring.NETのバージョン1.1がやっとこさリリースされた。Spring.NET - Application Framework新機能としては Inversion of Control Container Aspect-Oriented Programming Framework Aspect Library ASP.NET framework ASP.N…

PowerShellのコレクション比較演算子について

PowerShellのコレクションに対して-eq演算子で比較すると不可解な結果が返ってきてずっと頭をかしげていた。 PS > $a = @(1,2,3,4,5) PS > $a -eq 2 2なんて比較をするとbool値じゃなくて比較した右オペランドの値と同じ値が返ってくる。この挙動の意味がさ…