Exemple #1
0
        static void Main(string[] args)
        {
            UnityContainer container = new UnityContainer();

            container.EnableDebugDiagnostic();

            //container.RegisterType<INotificationHandler<INotification>, GenericHandler>("GenericHandler");
            container.RegisterType(typeof(INotificationHandler <>), typeof(GenericHandler), "GenericHandler");
            container.RegisterType <INotificationHandler <MyNotification>, MyNotificationHandler>("MyNotificationHandler");

            INotificationHandler <INotification>  genericHandler = new GenericHandler();
            INotificationHandler <MyNotification> myHandler      = new MyNotificationHandler();

            // Contravariance.
            // An object that is instantiated with a less derived type argument
            // is assigned to an object instantiated with a more derived type argument.
            // Assignment compatibility is reversed.
            myHandler = genericHandler;

            IEnumerable <INotificationHandler <MyNotification> > list = container.ResolveAll <INotificationHandler <MyNotification> >();

            Console.WriteLine($"Count should be 2 but is {list.Count()}");
            Console.WriteLine("The following types are resolved:");
            foreach (INotificationHandler <MyNotification> handler in list)
            {
                Console.WriteLine(handler.GetType().FullName);
            }
            Console.ReadLine();
        }
Exemple #2
0
        protected override ServiceHost CreateServiceHost(

            Type serviceType, Uri[] baseAddresses)

        {
            UnityServiceHost serviceHost = new UnityServiceHost(serviceType, baseAddresses);

            UnityContainer container = new UnityContainer();

            container.EnableDebugDiagnostic();
            container.EnableDiagnostic();
            container.AddExtension(new Diagnostic());

            serviceHost.Container = container;


            //configure container

            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Configure(container);

            //section.Containers.Default.Configure(serviceHost.Container);



            return(serviceHost);
        }
        public UnityServiceHost()
            : base()

        {
            Container = new UnityContainer();
            Container.EnableDebugDiagnostic();
            Container.EnableDiagnostic();
            Container.AddExtension(new Diagnostic());
        }
        public UnityServiceHost(Type serviceType, params Uri[] baseAddresses)

            : base(serviceType, baseAddresses)

        {
            Container = new UnityContainer();
            Container.EnableDebugDiagnostic();
            Container.EnableDiagnostic();
            Container.AddExtension(new Diagnostic());
        }
Exemple #5
0
        public UnityInstanceProvider(Type type)

        {
            ServiceType = type;

            Container = new UnityContainer();
            Container.EnableDebugDiagnostic();
            Container.EnableDiagnostic();
            Container.AddExtension(new Diagnostic());
        }
Exemple #6
0
        public static void Init()
        {
            unityContainer = new UnityContainer();
            unityContainer.EnableDebugDiagnostic();
            unityContainer.RegisterSingleton <SecureStorageService>();
            unityContainer.RegisterSingleton <IApiDataHelper, ApiDataHelperMock>();
            unityContainer.RegisterSingleton <ILoggingManager, LoggingManagerMock>();
            unityContainer.RegisterSingleton <IMessagesManager, MessagesManager>();
            unityContainer.RegisterSingleton <ILocalNotificationsManager, LocalNotificationManagerMock>();
            unityContainer.RegisterSingleton <IDeveloperToolsService, DeveloperToolsService>();
            XamarinEssentialsRegister(unityContainer);
            UnityServiceLocator unityServiceLocalter = new UnityServiceLocator(unityContainer);

            CommonServiceLocator.ServiceLocator.SetLocatorProvider(() => unityServiceLocalter);
        }
        public void ShouldResolveBoundAndUnboundGeneric()
        {
            var container = new UnityContainer();

            container.EnableDebugDiagnostic();

            container.RegisterType(typeof(INotificationHandler <>), typeof(GenericHandler), "GenericHandler");
            container.RegisterType <INotificationHandler <MyNotification>, MyNotificationHandler>("MyNotificationHandler");

            var handlers = container
                           .ResolveAll <INotificationHandler <MyNotification> >()
                           .ToList();

            Assert.AreEqual(handlers.Count, 2, "Should resolve 2 instances.");
            Assert.IsTrue(handlers.Any(inst => inst.GetType() == typeof(GenericHandler)), $"One resolved instance should be of type '{nameof(GenericHandler)}'.");
            Assert.IsTrue(handlers.Any(inst => inst.GetType() == typeof(MyNotificationHandler)), $"One resolved instance should be of type '{nameof(MyNotificationHandler)}'.");
        }
Exemple #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Feed"/> class
        /// </summary>
        /// <param name="config">A <see cref="IOddsFeedConfiguration"/> instance representing feed configuration</param>
        /// <param name="isReplay">Value indicating whether the constructed instance will be used to connect to replay server</param>
        protected Feed(IOddsFeedConfiguration config, bool isReplay)
        {
            Contract.Requires(config != null);

            LogInit();

            var container = new UnityContainer();

            container.EnableDebugDiagnostic();
            container.RegisterBaseTypes(config);
            var internalConfig = container.Resolve <IOddsFeedConfigurationInternal>();

            if (isReplay || internalConfig.Environment == SdkEnvironment.Replay)
            {
                internalConfig.EnableReplayServer();
            }
            internalConfig.Load(); // loads bookmaker_details
            container.RegisterTypes(this);
            container.RegisterAdditionalTypes();
            CurrentUnityContainer = container;

            EventRecoveryRequestIssuer   = CurrentUnityContainer.Resolve <IEventRecoveryRequestIssuer>();
            SportDataProvider            = CurrentUnityContainer.Resolve <ISportDataProvider>();
            CashOutProbabilitiesProvider = CurrentUnityContainer.Resolve <ICashOutProbabilitiesProvider>();
            _feedRecoveryManager         = CurrentUnityContainer.Resolve <IFeedRecoveryManager>();
            _connectionValidator         = CurrentUnityContainer.Resolve <ConnectionValidator>();
            InternalConfig           = CurrentUnityContainer.Resolve <IOddsFeedConfigurationInternal>();
            BookingManager           = CurrentUnityContainer.Resolve <IBookingManager>();
            MarketDescriptionManager = CurrentUnityContainer.Resolve <IMarketDescriptionManager>();
            BookmakerDetails         = InternalConfig.BookmakerDetails;
            CustomBetManager         = CurrentUnityContainer.Resolve <ICustomBetManager>();
            try
            {
                ProducerManager = CurrentUnityContainer.Resolve <IProducerManager>();
                if (isReplay || internalConfig.Environment == SdkEnvironment.Replay)
                {
                    ((ProducerManager)ProducerManager).SetIgnoreRecovery(0);
                }
            }
            catch (Exception e)
            {
                Log.Error("Error getting available producers.", e);
                throw;
            }
        }
Exemple #9
0
        private static void Main(string[] args)
        {
            var container = new UnityContainer();

            container.EnableDebugDiagnostic();

            // 同介面,不同實作,用 name 區別
            container.RegisterType <IFoo, Foo1>("Foo1");
            container.RegisterType <IFoo, Foo2>("Foo2");

            container.RegisterType <MainViewModel>();

            // 有建構式參數的註冊方式
            container.RegisterFactory <Func <string, IFoo> >((c, type, name) => c.Resolve <IFoo>(name));

            // 取回實體
            var vm = container.Resolve <MainViewModel>();
        }