[seasar-dotnet:1317] Re: Quill:フォームへのインジェクションがうまく行かない
taknb2nch
[E-MAIL ADDRESS DELETED]
2009年 5月 29日 (金) 19:31:31 JST
初めまして、こんにちは。
萩野と申します。
>小林さん
少し前に同じことではまりました。
まず私がとった方法ですが、
Seasar.Quill.QuillInjector injector = Seasar.Quill.QuillInjector.GetInstance();
injector.ClearInjected();
injector.Inject(this);
とすることで回避することができました。
ただこれが正しい方法かどうかは私には判断できないので、
ご存知のかたフォローをお願いします。
ソースを見る限り、
原因としてはQuillInjectorが一度Injectした「型」を保持しているようで、
newしたインスタンスをInjectしようとしても、
既に一度Injectしている「型」としてInjectされずにreturnされています。
ClearInjectedメソッドを呼ぶことにより、
この保持している「型」情報をクリアすることができ、
期待どおりInjectされます。
前はこのメソッドがなかったような気がするのですが、
私の知らない間に追加されていました。
ソースのコメントを読めば"なるほど"なのですが。。。
2009/05/29 15:31 小林貴生 <[E-MAIL ADDRESS DELETED]>:
> いつもお世話になっております。
> 以前も質問させて頂いた小林と申します。
>
>
> 今回も質問がありまして、メールさせて頂きました。
>
> Quill(Seasar.NET) 1.3.15
> VisualStudio2008
> です。
>
>
> 今困っている現象は、フォームへのインジェクションが
> 1回目は期待通りに行くけれども、2回目以降行かないと言うことです。
>
>
> 以下のようなソースを書いています。
>
> インジェクションされるクラス
> using Seasar.Quill.Attrs;
>
> namespace Sample.Hoge.Fuga
> {
> [Implementation]
> public class Hello
> {
> public string GetHello()
> {
> return "Hello";
> }
> }
> }
>
> 呼び出すフォーム
> using System;
> using System.Windows.Forms;
>
> namespace Sample.Hoge.Fuga.Forms
> {
> public partial class ClientForm : Form
> {
> public ClientForm()
> {
> InitializeComponent();
> }
>
> private void button2_Click(object sender, EventArgs e)
> {
> PopupForm frm = new PopupForm();
> frm.Show();
> }
> }
> }
>
> 呼び出されるフォーム
> using System;
> using System.Windows.Forms;
>
> namespace Sample.Hoge.Fuga.Forms
> {
> public partial class PopupForm : Form
> {
> public PopupForm()
> {
> InitializeComponent();
> }
>
> protected Hello _hello;
>
> private void PopupForm_Load(object sender, EventArgs e)
> {
> Seasar.Quill.QuillInjector.GetInstance().Inject(this);
> MessageBox.Show(_hello.GetHello());
> }
> }
> }
>
>
> 上記ソースを実行した場合、
> 1度目は _hello に値が設定されますが、
> 2度目以降、null のままでセットされません。
>
> 呼び出すフォームで、
> Seasar.Quill.QuillInjector.GetInstance().Inject(frm);
> もやってみましたが、ダメでした。
>
>
> フォーム自体をQuill管理することも考えましたが、
> 同じフォームで違う値を出したいこともあり、new したいな。と考えています。
>
>
> どなたか、上記現象の回避方法をお持ちでしたら、
> 教えて頂けないでしょうか。
>
> 以上、よろしくお願いいたします。
>
>
> 小林貴生
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
seasar-dotnet メーリングリストの案内