.NETらしさとDI

DIコンテナと.NETを組み合わせた時の「.NETらしさ」を考えてみたのですがすぐに思いつくのは以下の二点です。

1.VisualStudio等の統合開発環境との連携
2.ADO.NET(含むデータバインディング)との連携

1.に関しては言わずもがなです。ウィザードやプロパティシート等により統合開発環境(以後IDE)と.NETプラットホームが連携することによりその気になればプログラミングの労力をかなり省いた開発を行うことができます。とはいうものの本気でIDEと仲良くするためにはプログラミングの敷居が高くなるケースが多くVisualStudioの場合も例外ではありません。例えばDI用の設定ファイルを作るウィザードや入力支援付きのエディタ等を用意すると考えるとアドイン等の専門的なプログラミングが必要になるため例えばカスタムコンポーネントを組む手軽さで、という訳には行きません。それなりに時間が必要になるために手を出しにくい所でしょう。
となるとやはり注目したいのは2.の方でしょう。.NETで実際にアプリケーションを開発したことがある方であれば実感できると思いますがWebアプリケーションにしてもWindowsFormsアプリケーションにしてもデータバインディングは非常に便利ですしADOを洗練したADO.NETはWebベースのシステムでスタンダードになった非接続スタイルのデータベースプログラミングをスマートに実現できる良いフレームワークだと思います。
これとDIコンテナを組み合わせることを考えた場合間違いなく面白そうなのは

a. S2DAOに相当するDAOフレームワーク
b. カスタム属性を使ったデータバインディング属性の注入

これらではないでしょうか。

一般的にSeasar2を業務システムの開発に採用することを考えた場合はS2DAOは開発に一番にコントリビュートするフレームワークだと言えますがそれは.NET上のDIコンテナでも同様でしょう。
個人的にはADO.NETのXSDから強く型付けされたデータセットを作る手段は好きではないのでその代わりに使える型づけされたDAOをDIコンテナの機能と連携して簡単に(XSDや設定ファイル無しで)用意できる手段があれば良いと考えます。あと、以前に日記で言及したことがありますが私はスマートクライアントベースのフレームワークを考えているのでDiffgramやbinary等複数のデータ転送モードで動作するリモートに存在するデータを透過に扱える遅延バインド可能なDAOも欲しいところです。
データバインディングはプレゼンテーションとデータを結びつける非常に便利な機能でありWebForms、WindowsForms共に使えるのでこの部分をDIコンテナの依存性を注入する特性と組み合わせることによりデータバインディングの設定を柔軟に構成できるのでは、と考えています。