private static void RegisterActUsageServices(IServiceCollection container) { container.AddScoped <IActUsageHandlerSelector>(serviceProvider => { var handlers = serviceProvider.GetServices <IActUsageHandler>(); var handlersArray = handlers.ToArray(); var handlerSelector = new ActUsageHandlerSelector(handlersArray); return(handlerSelector); }); container.AddScoped <IActUsageHandler>(serviceProvider => { var perkResolver = serviceProvider.GetRequiredService <IPerkResolver>(); var randomSource = serviceProvider.GetRequiredService <ITacticalActUsageRandomSource>(); var handler = new ActorActUsageHandler(perkResolver, randomSource); ConfigurateActorActUsageHandler(serviceProvider, handler); return(handler); }); container.AddScoped <IActUsageHandler, StaticObjectActUsageHandler>(); container.AddScoped <ITacticalActUsageService>(serviceProvider => { var randomSource = serviceProvider.GetRequiredService <ITacticalActUsageRandomSource>(); var actHandlerSelector = serviceProvider.GetRequiredService <IActUsageHandlerSelector>(); var sectorManager = serviceProvider.GetRequiredService <ISectorManager>(); var tacticalActUsageService = new TacticalActUsageService(randomSource, sectorManager, actHandlerSelector); ConfigurateTacticalActUsageService(serviceProvider, tacticalActUsageService); return(tacticalActUsageService); }); }
public void GetHandler_TargetInheritedByBase_ReturnsHandler() { // ARRANGE var testHandlerMock = new Mock <IActUsageHandler>(); testHandlerMock.SetupGet(x => x.TargetType).Returns(typeof(ITest1)); var testHandler = testHandlerMock.Object; var selector = new ActUsageHandlerSelector(new IActUsageHandler[] { testHandler }); var targetObject = new Test2(); // ACT var factHandler = selector.GetHandler(targetObject); // ASSERT factHandler.Should().Be(testHandler); }
public void GetHandler_IsNotHandleTarget_ThrowsExceptionHandlerNotFound() { // ARRANGE var testHandlerMock = new Mock <IActUsageHandler>(); testHandlerMock.SetupGet(x => x.TargetType).Returns(typeof(ITest1)); var testHandler = testHandlerMock.Object; var selector = new ActUsageHandlerSelector(new IActUsageHandler[] { testHandler }); var targetObject = new NotHandleTarget(); // ACT Action act = () => { selector.GetHandler(targetObject); }; // ASSERT act.Should().Throw <HandlerNotFoundException>(); }
public static void RegisterActUsageService(this DiContainer diContainer) { diContainer.Bind <ITacticalActUsageService>().To <TacticalActUsageService>().AsSingle() .OnInstantiated <TacticalActUsageService>((c, service) => { var equipmentDurableService = diContainer.Resolve <IEquipmentDurableService>(); service.EquipmentDurableService = equipmentDurableService; }); diContainer.Bind <ITacticalActUsageRandomSource>().To <TacticalActUsageRandomSource>().AsSingle(); diContainer.Bind <IActUsageHandlerSelector>().FromMethod(() => { var handlers = diContainer.ResolveAll <IActUsageHandler>().ToArray(); var service = new ActUsageHandlerSelector(handlers); return(service); }).AsSingle(); diContainer.Bind <IActUsageHandler>().To <ActorActUsageHandler>().AsSingle() .OnInstantiated <ActorActUsageHandler>((contex, service) => { var equipmentDurableService = diContainer.Resolve <IEquipmentDurableService>(); service.EquipmentDurableService = equipmentDurableService; var actorInteractionBus = diContainer.Resolve <IActorInteractionBus>(); service.ActorInteractionBus = actorInteractionBus; var playerEventLogService = diContainer.Resolve <IPlayerEventLogService>(); service.PlayerEventLogService = playerEventLogService; var scoreManager = diContainer.Resolve <IScoreManager>(); service.ScoreManager = scoreManager; }); diContainer.Bind <IActUsageHandler>().To <StaticObjectActUsageHandler>().AsSingle(); }