Замок Виндзор не может разрешить все, когда интерфейс находится за 2 абстрактными базовыми классами - PullRequest
1 голос
/ 22 марта 2012

Я немного изменил архитектуру нашего приложения, и IWindsorContainer больше не может ResolveAll.

Это была старая архитектура, которая работала:

public abstract class ServiceBase : IService {}
public class TrainFileService : ServiceBase {}

И этоНовая архитектура, которую ResolveAll не разрешает FileProcessorScheduledService:

public abstract class ServiceBase : IService {}
public abstract class FileServiceBase : ServiceBase {}
public class TrainFileService : FileServiceBase {}

Итак, я ввел еще один абстрактный класс ....

Код, используемый ResolveAll для старого и нового способов, -:

IService[] _services = Program.IocContainer.ResolveAll<IService>();

Код, используемый для регистрации TrainFileService как для старого, так и для нового способа:

<castle>
 <components>
  <component id="TrainFileService"
           lifestyle="singleton"
           service="Blah.Service.Services.IService, Blah.Service"
           type="Blah.Service.Services.TrainFileService , Blah.Service">
  </component>

Спасибо

1 Ответ

0 голосов
/ 23 марта 2012

Как отметил Крис в комментариях, в том, как я изменил архитектуру, не было ничего плохого.

Проблема была в другом месте. А именно, я не зарегистрировал логическое значение в конструкторе ...

...