[seasar-dev:608] Re: [S2Dao.NET]正常なのにWarnログが発生する。

kubo jazzflute @ mbn.nifty.com
2006年 11月 16日 (木) 22:25:58 JST


久保です。

> >      GetArgType()を呼び出す必要がない。
> >        →GetArg()内で、Splitして解析しているため
> 
> カンマになっているのは明らかにバグですね・・orz
> カンマとなっている部分を修正するだけでは駄目なのでしょうか?

カンマをドットに変えるだけだと、
Splitの解析をGetArg()内で行ってるため、
propertyNameを使ってリフレクションでvalueを取得しているところで
PropertyInfoのGetValue()の引数に間違ったvalueを突っ込んでしまいます。

「$dto.FisrtProperty」という風に{.}つなぎをやったときに、
FisrtPropertyのPropertyInfoのGetValue()の引数にGetArg()で取得した
FisrtPropertyの値を入れてしまい、「FisrtPropertyにはFisrtPropertyの
Propertyが無い」と怒られてしまいます。(要はズレてしまう)

Splitの解析をGetArg()内で行っていることにより、
EmbeddedValueNodeでやらなければならないことが実は極端に少ないのです。

なので修正したら以下のようになります。{EmbeddedValueNode}
/-----------------------------------------------------
public override void Accept(ICommandContext ctx)
{
    object value = ctx.GetArg(expression);
    if (value != null) ctx.AddSql(value.ToString());
}
------------/

> >        →CommandContextImpl内でWARNは出力せず、
> >          BindVariableNodeやEmbeddedValueNodeなどが、
> >          戻り値で判断してWARNを出す。
> 
> そうですね。Javaと違ってしまうのが嫌ですが、BindVariableNodeと
> EmbeddedValueNode経由で呼ばれたときに警告を出力するように
> するのが良さそうですね。

ありがとうございます。
では、そのようにさせて頂きます。


> JScript.NETがいまいちですねぇ。
> ここはMonoも考慮してIronPytonでしょうか・・(^_^;)
> akirameiさんがソースコード提供してくれてますし。
> http://d.hatena.ne.jp/akiramei/20060726/p1
> 
> 現状だとMockでオブジェクトの配列とか欲しいときに、配列作成用の
> Interceptorとか自作しないと駄目なんですよねぇ・・orz

ふむぅ。。。
実は、自分「JScript.NET」にあまり詳しくないんですが、
どういう感じでいまいちなんでしょうか?
(単純に興味本位(勉強のため)の質問です)



-- 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
kubo   <jazzflute @ mbn.nifty.com>
jflute <http://d.hatena.ne.jp/jflute>
株式会社ビルドシステム <http://www.buildsystem.co.jp>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/




Seasar-dev メーリングリストの案内