2012-12-04 67 views
1

問題:溫莎城堡解決多個依賴具有相同的接口

類構造函數如下:

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. ARule and BRule

回答

0

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")); 
+1

請在你的答案英文單詞描述的代碼,以及它如何回答這個問題。我看到三個註冊表,但無法解決某個特定組件。 –