Для следующего кода, как я могу решить на основе имени?IoC StructureMap разрешить именованный экземпляр
public interface IService
{}
public class ServiceA : IService
{}
public class ServiceB : IService
{}
public class ClassA
{
public IService service { get; set; }
public ClassA(IService service)
{
this.service = service;
}
}
public class ClassB
{
public IService service { get; set; }
public ClassB(IService service)
{
this.service = service;
}
}
реестра:
public class MyRegistry : Registry
{
public MyRegistry()
{
For<IService>().Add<ServiceA>().Ctor<IService>().Is(i => i.GetInstance<IService>("ServiceA")); // error
}
}
Использование:
container = new Container(new MyRegistry());
var test = container.GetInstance<ClassA>();
Проблема:
- Для ClassA IService => должен Выход ServiceA
Для ClassB IService => должен дать ServiceB
Кроме того, Есть ли способ, чтобы использовать атрибуты в конструкторе указать конкретную реализацию для конкретного типа? (Поэтому он не должен быть указан в конфигурации?)