У меня есть объект "TestProperty", который реализует "ITestProperty".«TestProperty» принимает аргумент конструктора строки.Это настраивается в StructureMap, используя что-то вроде CtorDependency или WithCtorArg.
Я хочу внедрить экземпляр «ITestProperty» (реализованный с «TestProperty») в другой класс в качестве свойства.Когда я пытаюсь запустить код, я получаю исключение (код ошибки StructureMap 205, «Отсутствует запрошенное свойство экземпляра»).
Вот упрощенная версия, воссоздающая проблему:
Тест:
[Test]
public void Can_resolve_the_correct_property()
{
ObjectFactory.Initialize( x => x.AddRegistry( new TestRegistry() ) );
var instance = ObjectFactory.GetInstance<TestController>();
}
Настройка реестра:
public class TestRegistry : Registry
{
public TestRegistry()
{
ForRequestedType<ITestProperty>().AddInstances(
i => i.OfConcreteType<TestProperty>().WithName( "Test" )
.CtorDependency<string>( "arg" ).Is( "abc" )
);
//ForConcreteType<TestProperty>().Configure
.CtorDependency<string>( "arg" ).Is( "abc" );
ForConcreteType<TestController>().Configure
.SetterDependency( p => p.Property ).Is<TestProperty>()
.WithName( "Test" );
}
}
Тестовые объекты:
public interface ITestProperty { }
public class TestProperty : ITestProperty
{
private readonly string arg;
public TestProperty( string arg )
{
this.arg = arg;
}
public string Arg { get { return arg; } }
}
public class TestController
{
public ITestProperty Property { get; set; }
}
Когда мы идем для инициализации объекта «TestController», выше выдается исключение.Возможно ли это сделать с помощью StructureMap?Предполагая, что это возможно, что мне нужно сделать, чтобы это заработало?
Заранее спасибо.