2016-03-24 6 views
0

Я довольно новичок в IoC и Castle, и мне трудно регистрировать класс через реализованный интерфейс.Замок - Регистрация неизвестной реализации

В моем приложении имеется несколько сборок с интерфейсом реализации класса IErrorCodes. Во время выполнения определяется, присутствует ли один (не более) из этих сборок/классов, а также всегда есть Класс DefaultErrorCodes, который должен использоваться, когда реальной реализации не существует.

следующих результатов кода в реализации (например. UkErrorCodes) присутствует в Услуги части контейнера, но замок дает мне ошибку, когда приложение получает к той части, где реализация IErrorCodes следует вводить слова " вы забыли прокси это»

container.Register(
    Classes.FromAssemblyInDirectory(new AssemblyFilter("bin")). 
       BasedOn<IErrorCodes>(). 
       Unless(t=> t.IsAbstract). 
       WithServiceBase(), 
    Component.For<IErrorCodes>() 
       .IsFallback(c => c == typeof(DefaultErrorCodes)).LifestyleSingleton()); 

ответ

0

решение, которое работало для меня:

 container.Register(
      Component. 
       For<IErrorCodes>(). 
       ImplementedBy<DefaultErrorCodes>(). 
       IsFallback(), 
      Classes. 
       FromAssemblyInDirectory(new AssemblyFilter("bin")). 
       BasedOn<IErrorCodes>(). 
       Unless(t => t.IsAbstract). 
       WithServiceBase(). 
       LifestyleSingleton());