我希望能够检索在给定名称下在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);
}
答案 0 :(得分:0)
一种方式:
public sealed class MyRegistry : Registry
{
public MyRegistry()
: base()
{
For<IProcessor>()
.Use<FooProcessor>().Named("Foo");