Я хочу иметь возможность получать все экземпляры определенного интерфейса, которые были настроены в Structuremap под заданным именем.
Я уже использую Structuremap в проекте для внедрения в конструктор, и мне кажется, что мне нужно с этим справиться.
Например: у меня есть интерфейс IProcessor
, который реализуют многие конкретные классы. Каждый конкретный класс имеет имя , причем некоторые классы имеют одно и то же имя. Для заданного имени я хочу иметь возможность вернуть все конкретные экземпляры IProcessor
.
IEnumerable<IProcessor> processors = ProcessorsByName("foo");
ProcessorsByName(string name)
{
// Some Structuremap magic here
// Ideally something like (which I know doesn't exist)
return ObjectFactory.GetAllNamedInstances<IProcessor>(name);
}
Я знаю, что мог бы позвонить ObjectFactory.GetAllInstances<IProcessor>()
, а затем в ходе этого тестирования перечислить каждое из них, чтобы убедиться, что это правильное имя, но это звучит расточительно.
// Possible solution
interface IProcessor
{
string Name { get; }
}
IEnumerable<IProcessor> processors = ProcessorsByName("foo");
ProcessorsByName(string name)
{
// Having a dog and barking yourself
return ObjectFactory.GetAllInstances<IProcessor>().Where(p => p.Name == name);
}