2012-12-04 2 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 и 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

Пожалуйста, включите английские слова в вашем ответе, описывающие код и как он отвечает на вопрос. Я вижу три регистра, но не могу решить какой-либо конкретный компонент. –

Смежные вопросы