[Seasar-s2dotnet 96] Re: Patch Request: S2Container.NET 1.00-RC1における正常系での例外の利用について

Kazuya Sugimoto sugimoto
2005年 11月 13日 (日) 00:02:22 JST


杉本です。

菊池さん、ご指摘ありがとうございます。

ご指摘頂いた2点以外にもS2Container.NETでは、正常経路中での例外の利用を
行っており、1.0.0では現在の設計でリリースしたいと思います。
バグフィックスではなく、設計の見直しになるからです。
# IncrementPathCountの方は1.0.0では修正します。

ただ、S2Container.NETで「正常経路中で例外を利用しない」
というのは賛成です。
なので、1.0.0の次のバージョンでは、正常経路中で例外を利用しない
ように設計の見直しを行いたいと思います。
# リーダとも相談しますが。

# 菊池さんのブログ参考になりました。 ありがとうございます。m(_ _)m
# http://www.ailight.jp/blog/kazuk/articles/6298.aspx



菊池 和彦さん wrote:
> 菊池です
> 
>  そんなわけで .NET Framework 2.0 上で動かそうと弄っているのですが
> (殆ど動いてる模様です。)
>  .NET Framework 1.1上でも修正したほうが良いと思える部分を2点程
> 見つけましたので Patch Request します。
> 
>  とりあえず全ての例外をデバッガで止める用にして動かしていて気が
> 付いた以下の点
> 
> Seasar.Framework.Xml.TagHandlerContext の
>  IncrementPathCount
> 
>  修正理由:正常経路中での例外の利用
> 
> Before
>         private int IncrementPathCount()
>         {
>             string path = this.Path;
>             int pathCount;
>             try
>             {
>                 pathCount = (int) pathCounts_[path];
>                 pathCount++;
>             }
>             catch(NullReferenceException)
>             {
>                 pathCount = ONE;
>             }
>             pathCounts_[path] = pathCount;
>             return pathCount;
>         }
> 
> After
>         private int IncrementPathCount()
>         {
>             string path = this.Path;
>             int pathCount=0;
> 
>             if (pathCounts_[path] != null)
>             {
>                 pathCount = (int)pathCounts_[path];
>             }
> 
>             pathCount++;
>             pathCounts_[path] = pathCount;
>             return pathCount;
>         }
> 
> その2
> 
>  あと、Seaser.Famework.Container.Assembler.AutoPropertyAssemblerの
> Assemble が S2ContainerImpl.GetComponentDef から頻繁に例外を貰っている
> ので、これも例外の正常ケースでの利用にあたるのではと思います。
>  TryGetComponent を IS2Container に追加して、見つからない場合にnullを
> 返し例外を投げないようにし、それを利用するようにすると動作に影響は無く
> 例外が発生しないように修正できました。
> 
>  上記2点の修正で Examples を動かす上では ManifestResourceが気に入らない
> と言ってくる1回の例外のみになりました。
> 
>  2点目はインターフェースにメソッド追加が必要で、仕様面に話が及んでしまう
> ので精査願えればと思います。
> 
> --
>  Kazuhiko Kikuchi <kazuk @ agate.plala.or.jp>
>   Microsoft Most Valueable Professional (MSMVP) - Visual C# 2004
> 
> _______________________________________________
> Seasar-s2dotnet mailing list
> Seasar-s2dotnet @ lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/seasar-s2dotnet
> 


-- 
Kazuya Sugimoto
http://d.hatena.ne.jp/sugimotokazuya/
S2Container.NET
http://s2dotnet.oscj.net/
S2Dao.NET
http://s2dao.net.sandbox.seasar.org/


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