【问题标题】:Windsor Castle resolving multiple dependencies with same interface温莎城堡使用相同的接口解决多个依赖项
【发布时间】:2012-12-04 21:21:57
【问题描述】:

问题:

类构造函数如下:

public class ParsingRulesProvider : IParsingRulesProvider{
    public ParsingRulesProvider(List<IParsingRule> rules){}
}

我们有两条规则:

public class ARule : IParsingRule{
    public ARule(IASomeObject someObject){}
}

public class BRule : IParsingRule{
    public BRule(IBSomeObject someObject){}
}

问题:

如何在代码中注册:

  1. ParsingRulesProvider 使用规则 A 和 B?
  2. ParsingRulesProvider 所有对象都实现了 IParsingRule?
  3. ARuleBRule?

【问题讨论】:

    标签: dependency-injection castle-windsor


    【解决方案1】:

    AD1)

    container.Kernel.Resolver.AddSubResolver(new ListResolver(container.Kernel, true));
    

    AD2)

    container.Register(Component
        .For<IParsingRulesProvider>()
        .ImplementedBy<ParsingRulesProvider>());
    

    AD3)

        container.Register(Component
                .For<IParsingRule>()
                .ImplementedBy<ARule>()
                .LifeStyle.Singleton
                .Named("ARule"));
    
        container.Register(Component
            .For<IParsingRule>()
            .ImplementedBy<BRule>()
            .LifeStyle.Singleton
            .Named("BRule"));
    

    【讨论】:

    • 请在您的回答中包含描述代码及其如何回答问题的英文单词。我看到三个寄存器,但无法解析特定组件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多