Я немного изменил архитектуру нашего приложения, и IWindsorContainer больше не может разрешить All.Замок Виндзор не может быть разрешен Все, если интерфейс находится за 2 абстрактными базовыми классами
Это была старая архитектура, которая сделала работу:
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 {}
Итак, я представил еще один абстрактный класс ....
Код, используемый для решения всех вопросов для старого и нового способа:
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>
Благодаря
Как вы регистрируете 'TrainFileService'? –
Последний фрагмент кода используется для регистрации TrainFileService (IService [] _services = Program.IocContainer.ResolveAll();). Это работало по-старому, но не по-новому. –
Как вы его разрешаете (вытащите * из * контейнера). Не то, как вы зарегистрируете его (получите его * в * контейнер). –