以下のテストは最後Assert()
に次のメッセージで失敗します: Expected: "arg2" But was: "arg1"
"arg1"
初めて渡されたときのようです-型付きファクトリはこれを記憶し"arg2"
、2回目の呼び出しから無視します。なんで?
public class E
{
public string Arg { get; set; }
public E(string arg)
{
Arg = arg;
}
}
public interface IEFactory
{
E Create(string arg);
}
[Test]
public void TypedFactoryWorksAsExpected()
{
var windsor = new WindsorContainer();
windsor.Kernel.AddFacility<TypedFactoryFacility>();
windsor.Register(
Component.For<E>(),
Component.For<IEFactory>().AsFactory());
var factory = windsor.Resolve<IEFactory>();
var e1 = factory.Create("arg1");
var e2 = factory.Create("arg2");
Assert.AreEqual("arg1", e1.Arg);
// This line fails with message:
// 'Expected: "arg2" But was: "arg1".'
Assert.AreEqual("arg2", e2.Arg);
}