Это ожидаемое поведение, и если так, как я могу вызвать ошибку, когда завод не сможет что -то вернуть? Пример < /p>
Код: Выделить всё
public class MyDependency : IMyDependency
{
public MyDependency(bool error)
{
if (error) throw new Exception("I error on creation");
}
}
public interface IMyDependency
{
}
public class MyConsumer
{
public IMyDependency MyDependency { get; set; }
}
[TestFixture]
public class ProgramTest
{
[Test]
public void CreateWithoutError() //Works as expected
{
var container = new WindsorContainer().Register(
Component.For().UsingFactoryMethod(() => new MyDependency(false)).LifeStyle.Transient,
Component.For().LifeStyle.Transient
);
var consumer = container.Resolve();
Assert.IsNotNull(consumer);
Assert.IsNotNull(consumer.MyDependency);
}
[Test]
public void CreateWithError_WhatShouldHappen() //I would expect an error since it can't create MyDependency
{
var container = new WindsorContainer().Register(
Component.For().UsingFactoryMethod(() => new MyDependency(true)).LifeStyle.Transient,
Component.For().LifeStyle.Transient
);
Assert.Throws(() => container.Resolve());
}
[Test]
public void CreateWithError_WhatActuallyHappens() //Gives me back a consumer, but ignores MyDependency
{
var container = new WindsorContainer().Register(
Component.For().UsingFactoryMethod(() => new MyDependency(true)).LifeStyle.Transient,
Component.For().LifeStyle.Transient
);
var consumer = container.Resolve();
Assert.IsNotNull(consumer);
Assert.IsNull(consumer.MyDependency); //Basically fails silently!
}
}
Подробнее здесь: https://stackoverflow.com/questions/439 ... ory-method
Мобильная версия