[seasar-dotnet:1316] Quill:フォームへのインジェクションがうまく行かない

小林貴生 [E-MAIL ADDRESS DELETED]
2009年 5月 29日 (金) 15:31:10 JST


いつもお世話になっております。
以前も質問させて頂いた小林と申します。


今回も質問がありまして、メールさせて頂きました。

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