[seasar-dotnet:364] S2Container.NET&S2Dao.NETについて

Yuji Horiguchi soprano7 @ gmail.com
2006年 11月 7日 (火) 00:30:02 JST


初めまして、堀口と申します。

今度初めてDI&AOPを導入してみようと思い、S2Container.NET&S2Dao.NETを使わ
せていただいているのですが、いくつか疑問&要望が出てきました。


・ダイナミックモジュールがあると例外が出てしまいます
これはテストでNMock2を使用したときに起こったのですが、アセンブリの中にダ
イナミックモジュールがあるとS2ContainerFactory.Create取得時、あるいは
SingletonS2ContainerFactory.Init時にNotSupportedExeptionが発生してしまう
ようです。
NMock2は内部でNMockというダイナミックモジュールを作成しているらしく
ResourceUtilクラスのGetResourceNoExceptionメソッドでこのアセンブリに対し
てGetManifestResourceStreamを行ったところ(106行目)でエラーとなっているよ
うです。
自分がダイナミックモジュールというものがよくわからず、対象となるアセンブ
リがダイナミックモジュールかどうか判断する適切な方法も見つからないのです
が、とりあえず、asm.ManifestModule.ScopeNameが"Default Dynamic Module"か
どうかを判定することで回避することは出来ました。
もし可能でしたらGetResourceNoException実行時にダイナミックモジュールを除
外するようにしていただけないでしょうか。

・GetComponent について
現在のGetComponentはTypeでの指定とnameでの指定方法がありますがこれに加え
てTypeおよびnameにて指定するようなoverloadを追加していただけないでしょうか。
理由はTypeで指定をするとdiconファイル中に同じインターフェースを持つオブ
ジェクトが複数あるとエラーになってしまい、nameで指定するとaspectが出来な
かったからです。
nameからGetComponentDefを使用してIComponentDefを取得し、
IComponentDef.GetComponentを使用することによって望む動作を実現することは
出来ましたが、これをGetComponentのoverloadとして実装していただければと思
いました。

・S2Daoの更新とトリガについて
SQL Server 2000を使用しています。
I*DaoでUpdateメソッドを実行するときにトリガが実行されるとトリガの更新件
数を参照してしまうようでNotSingleRowUpdatedRuntimeExceptionが発生してし
まいます(更新そのものは問題ないようです)。
これはADO.NET(SQL Server?)の仕様のようですから、どうしようもないかもしれ
ませんが何か良い方法がありますでしょうか。いまは
NotSingleRowUpdatedRuntimeExceptionを無視するようにしています(排他制御が
出来なくなりますが…)。


確認した環境:
Windows XP SP2
VS 2005
S2Container.NET 1.2.5(.NET2.0)
S2Dao.NET 1.0.0(.NET2.0)
NUnit&NMock2を使用してテスト行っています。

まだ、DI&AOPはもちろん.NETもなれていないので見当違いな内容もあるかもしれ
ませんが、お知恵をお貸しいただければ、また採用していただければと思います。
長文失礼しました。

-- 
Yuji Horiguchi
soprano7 @ gmail.com


seasar-dotnet メーリングリストの案内