instance=outer

Seasar.NETによるインスタンス管理ですが、outerの使い方を今頃知りました。コンテナの外側で生成したオブジェクトをGetComponentで取得出来るものなの?とか疑問だったんですが、InjectDependencyメソッドを使うんですね。(^^;

diconファイル。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
  <component class="ClassLibrary.Person" instance="outer">
    <property name="Name">"Taro"</property>
    <property name="Age">20</property>
  </component>
</components>

使い方。

using MbUnit.Framework;
using Seasar.Extension.Unit;

namespace ClassLibrary
{
    public class Person
    {
        private int age;
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public int Age
        {
            get { return age; }
            set { age = value; }
        }
    }

    [TestFixture]
    public class ClassTest : S2TestCase
    {
        [Test, S2]
        public void Test()
        {
            Person p = new Person();
            // インスタンス管理はouter
            Container.InjectDependency (p);

            Assert.AreEqual ("Taro", p.Name);
            Assert.AreEqual (20, p.Age);
        }
    }
}