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(); }
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()); }
public UnityInstanceProvider(Type type) { ServiceType = type; Container = new UnityContainer(); Container.EnableDebugDiagnostic(); Container.EnableDiagnostic(); Container.AddExtension(new Diagnostic()); }
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)}'."); }
/// <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; } }
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>(); }