[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 メーリングリストの案内