结构图:按名称检索给定接口的所有具体类

时间:2011-11-23 11:32:24

标签: .net configuration structuremap

我希望能够检索在给定名称下在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);
}

1 个答案:

答案 0 :(得分:0)

一种方式:

public sealed class MyRegistry : Registry
{
    public MyRegistry()
        : base()
    {

        For<IProcessor>()
            .Use<FooProcessor>().Named("Foo");