public void Init() { _imageFromCacheService = Substitute.For <IImageFromCacheService>(); _imageFromWebCamService = Substitute.For <IImageFromWebCamService>(); _dateTimeProvider = Substitute.For <IDateTimeProvider>(); _logger = null; _cacheUpdater = new CacheUpdaterInfo(); _cacheUpdaterExpirationMilliSec = 600; }
public ImageProviderService(IImageFromCacheService imageFromCacheService, IImageFromWebCamService imageFromWebCamService, IDateTimeProvider dateTimeProvider, IMiniLogger logger, int cacheUpdaterExpirationMilliSec, CacheUpdaterInfo cacheUpdaterInfo, string imageErrorLogoUrl) { if (cacheUpdaterExpirationMilliSec < MinValueCacheUpdaterLifeTimeMilliSec) { throw new ArgumentException( nameof(cacheUpdaterExpirationMilliSec) + $" = {cacheUpdaterExpirationMilliSec} < {MinValueCacheUpdaterLifeTimeMilliSec}"); } _imageFromCacheService = imageFromCacheService ?? throw new ArgumentNullException(nameof(imageFromCacheService)); _imageFromWebCamService = imageFromWebCamService ?? throw new ArgumentNullException(nameof(imageFromWebCamService)); _dateTimeProvider = dateTimeProvider ?? throw new ArgumentNullException(nameof(dateTimeProvider)); _logger = logger; _cacheUpdaterExpirationMilliSec = cacheUpdaterExpirationMilliSec; _cacheUpdaterInfo = cacheUpdaterInfo ?? new CacheUpdaterInfo(); _imageErrorLogoUrl = imageErrorLogoUrl; }
/// <summary> /// Registers the type mappings with the Unity container (IoC container). /// </summary> /// <param name="container">The unity container to configure.</param> /// <remarks> /// There is no need to register concrete types such as controllers or /// API controllers (unless you want to change the defaults), as Unity /// allows resolving a concrete type even if it was not previously /// registered. /// </remarks> public static void RegisterTypes(IUnityContainer container) { // NOTE: To load from web.config uncomment the line below. // Make sure to add a Unity.Configuration to the using statements. // container.LoadConfiguration(); // TODO: Register your type's mappings here. // container.RegisterType<IProductRepository, ProductRepository>(); // Register interfaces AppConfiguration configuration = AppConfiguration.Instance; container.RegisterInstance( configuration, new ContainerControlledLifetimeManager() //Singleton ); container.RegisterType <IDateTimeProvider, DateTimeProvider>( new ContainerControlledLifetimeManager() //Singleton ); container.RegisterType <IMiniLogger, MiniLogger>( new InjectionConstructor( container.Resolve <IDateTimeProvider>(), container.Resolve <AppConfiguration>().UserIPsLogPath, container.Resolve <AppConfiguration>().UserPtzCmdLogPath, container.Resolve <AppConfiguration>().ErrorsLogPath, container.Resolve <AppConfiguration>().CacheStatsLogPath )); var imageCache = new CacheUpdateService(); container.RegisterInstance(imageCache); container.RegisterType <IImageFromCacheService, ImageFromCacheService>( new InjectionConstructor( container.Resolve <CacheUpdateService>(), container.Resolve <IMiniLogger>(), container.Resolve <AppConfiguration>().CacheLifeTimeMilliSec, container.Resolve <AppConfiguration>().CameraFps )); container.RegisterType <IImageFromWebCamService, ImageFromWebCamService>( new InjectionConstructor( container.Resolve <AppConfiguration>().CameraConnectionInfo )); var cacheUpdater = new CacheUpdaterInfo(); container.RegisterInstance( cacheUpdater, new ContainerControlledLifetimeManager() //Singleton ); container.RegisterType <IImageProviderService, ImageProviderService>( new InjectionConstructor( container.Resolve <IImageFromCacheService>(), container.Resolve <IImageFromWebCamService>(), container.Resolve <IDateTimeProvider>(), container.Resolve <IMiniLogger>(), container.Resolve <AppConfiguration>().CacheUpdaterExpirationMilliSec, container.Resolve <CacheUpdaterInfo>(), container.Resolve <AppConfiguration>().ErrorImageLogPath )); //// Register controllers - not needed //container.RegisterType<BaseApiController>(); //container.RegisterType<ImageController>(); //container.RegisterType<PtzController>(); GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container); }