示例#1
0
        private static IRpnCalculator GetRpnCalculator()
        {
            IUnityContainer unityContainer = new UnityContainer();

            unityContainer.AddExtension(new StackUnityContainerExtension());
            unityContainer.AddExtension(new RpnCalculatorUnityContainerExtension());
            return(unityContainer.Resolve <IRpnCalculator>());
        }
        public void AddExtensionTest()
        {
            // Act
            container.AddExtension(mock)
            .AddExtension(other)
            .AddExtension(derived);

            // Validate
            Assert.IsTrue(mock.InitializeWasCalled);
            Assert.IsTrue(other.InitializeWasCalled);
            Assert.IsTrue(derived.InitializeWasCalled);
        }
示例#3
0
        public static void RegisterComponents()
        {
            var container = new UnityContainer();

            // register all your components with the container here
            // it is NOT necessary to register your controllers

            // e.g. container.RegisterType<ITestService, TestService>();
            container.AddExtension(new DataUnityContainerExtension());
            container.AddExtension(new APIUnityContainerExtension());

            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
        }
        public void CreatedPoliciesIncludeContainerLifetime()
        {
            TraceListenerData listenerData = new MockTraceListenerData("listener");

            loggingSettings.TraceListeners.Add(listenerData);

            MockTraceListener listener = null;

            using (IUnityContainer newContainer = new UnityContainer())
            {
                newContainer.AddExtension(new EnterpriseLibraryCoreExtension(configurationSource));

                listener =
                    (MockTraceListener)((ReconfigurableTraceListenerWrapper)newContainer.Resolve <TraceListener>("listener")).InnerTraceListener;

                Assert.IsNotNull(listener);
                Assert.AreSame(
                    listener,
                    ((ReconfigurableTraceListenerWrapper)newContainer.Resolve <TraceListener>("listener")).InnerTraceListener);  // lifetime managed?

                Assert.IsFalse(listener.wasDisposed);
            }

            Assert.IsTrue(listener.wasDisposed);        // lifetime managed by the container?
        }
示例#5
0
        private static IStack <int> GetStack()
        {
            IUnityContainer container = new UnityContainer();

            container.AddExtension(new StackUnityContainerExtension());
            return(container.Resolve <IStack <int> >());
        }
        public void Test1()
        {
            var container = new UnityContainer();

            container.AddExtension(new AOPExtension());
            Assert.Pass();
        }
示例#7
0
        static void Main(string[] args)
        {
            // Create and configure LoggerFactory
            ILoggerFactory loggerFactory = new LoggerFactory();

            loggerFactory.AddProvider(
                new ConsoleLoggerProvider((text, logLevel) => logLevel >= LogLevel.Debug, false));

            // Create local logger
            ILogger logger = loggerFactory.CreateLogger <Program>();

            // Get the container
            var container = new UnityContainer();

            logger.LogInformation("Created Container");

            // Register extension and pass it configured factory

            container.AddExtension(new LoggingExtension(loggerFactory));
            logger.LogInformation("Added Log4Net Extension");

            // Register few types
            container.RegisterType <IService, Service>();
            logger.LogInformation("Registered few types");

            var service = container.Resolve <IService>();

            logger.LogInformation("Press any key to continue...");
            Console.ReadKey();
        }
     public DimensionalClearanceService()
     {
         InitializeComponent();
         ExceptionHandlingManager.InitializeExceptionManager();
 
         _container.AddExtension(new ModelContainerExtension());
     }
示例#9
0
        static void Main(string[] args)
        {
            // 這裡將會建立 DI 容器
            IUnityContainer container = new UnityContainer();

            var fooInterception = new Interception();

            container.AddExtension(fooInterception);

            // 進行抽象型別與具體實作類別的註冊
            // 在進行註冊抽象與具體實作類別的時候,我們需要進行攔截行為的設定,告知要啟用 Unity 攔截功能
            container.RegisterType <IMessage, ConsoleMessage>(
                new Interceptor <InterfaceInterceptor>(),
                new InterceptionBehavior <AppLog>(),
                new InterceptionBehavior <VirtualLog>());

            // 進行抽象型別的具體實作物件的解析
            IMessage message = container.Resolve <IMessage>();

            Console.WriteLine($"{Environment.NewLine}呼叫 IMessage.Write");

            // 執行取得物件的方法
            message.Write("Hi Vulcan");
            Console.WriteLine($"{Environment.NewLine}呼叫 IMessage.Empty");
            message.Empty();

            Console.WriteLine("Press any key for continuing...");
            Console.ReadKey();
        }
示例#10
0
        public void CreatesAppropriatePoliciesIfProviderHasProperConstructor()
        {
            TestCustomProviderData data = new TestCustomProviderData();

            data.Name                = "name";
            data.Type                = typeof(TestCustomProviderWithValidConstructor);
            data.Attributes          = new NameValueCollection();
            data.Attributes["name1"] = "value1";
            data.Attributes["name2"] = "value2";
            CustomProviderPolicyCreator <TestCustomProviderData> policyCreator
                = new CustomProviderPolicyCreator <TestCustomProviderData>();
            TestHelperExtension extension = new TestHelperExtension();

            extension.initialize = context =>
            {
                ((IContainerPolicyCreator)policyCreator).CreatePolicies(context.Policies, data.Name, data, null);
            };
            IUnityContainer container = new UnityContainer();

            container.AddExtension(extension);
            TestCustomProviderWithValidConstructor createdObject
                = container.Resolve <TestCustomProviderWithValidConstructor>("name");

            Assert.IsNotNull(createdObject);
            Assert.AreEqual(2, createdObject.Attributes.Count);
            Assert.AreEqual("value1", createdObject.Attributes["name1"]);
            Assert.AreEqual("value2", createdObject.Attributes["name2"]);
        }
示例#11
0
        private static void ConfigureUnity(UnityContainerExtension initialization)
        {
            Logger.InfoFormat("Starting the server [{0}]", typeof(Shell).Assembly.EffectiveVersion());
            try
            {
                var configurationSource = ConfigurationSourceFactory.Create();
                var container           = new UnityContainer()
                                          .AddExtension(new EnterpriseLibraryCoreExtension(configurationSource))
                                          .RegisterInstance(configurationSource);

                var serviceLocator = new UnityServiceLocator(container);
                Microsoft.Practices.ServiceLocation.ServiceLocator.SetLocatorProvider(() => serviceLocator);
                EnterpriseLibraryContainer.Current = serviceLocator;

                if (initialization != null)
                {
                    container.AddExtension(initialization);
                }

                var section = (UnityConfigurationSection)configurationSource.GetSection("unity");
                if (section != null)
                {
                    section.Configure(container);
                }
            }
            catch (Exception ex)
            {
                Logger.Fatal("Unexpected error while container initialization", ex);
                throw;
            }
        }
示例#12
0
        public static void Start()
        {
            string configurationFilepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Quartz.config");

            var configurationFileMap = new ExeConfigurationFileMap {
                ExeConfigFilename = configurationFilepath
            };
            var configuration = ConfigurationManager.OpenMappedExeConfiguration(configurationFileMap, ConfigurationUserLevel.None);

            System.Xml.XmlDocument sectionXmlDocument = new System.Xml.XmlDocument();
            sectionXmlDocument.Load(new StringReader(configuration.GetSection("quartz").SectionInformation.GetRawXml()));
            NameValueSectionHandler handler = new NameValueSectionHandler();

            var quartzProperties = (NameValueCollection)handler.Create(null, null, sectionXmlDocument.DocumentElement);

            LogProvider.SetCurrentLogProvider(new Areas.CmsAdmin.Scheduler.EntLibLogProvider());

            var logEntiry = new Microsoft.Practices.EnterpriseLibrary.Logging.LogEntry();

            logEntiry.Title    = "Scheduler Event";
            logEntiry.Severity = System.Diagnostics.TraceEventType.Start;
            logEntiry.Message  = "Restart the scheduler has been completed";
            Microsoft.Practices.EnterpriseLibrary.Logging.Logger.Write(logEntiry);

            IUnityContainer unityContainer = new UnityContainer();

            ConfigUnityContainer(unityContainer);
            unityContainer.AddExtension(new QuartzUnityExtension(quartzProperties));
            unityContainer.Resolve <IScheduler>().Start();
        }
示例#13
0
        public static IUnityContainer InitialiseContainer()
        {
            var unityContainer = new UnityContainer();

            unityContainer.AddExtension(new ScheduleFeedFileDependencies());
            return(unityContainer);
        }
示例#14
0
        public void UnityCanResolveEnumerableOfLazyTypesRegisteredInUnityTest()
        {
            // Setup
            var unityContainer  = new UnityContainer();
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());

            // Add composition support for unity
            unityContainer.AddExtension(new CompositionIntegration(true));
            unityContainer.Configure <CompositionIntegration>().Catalogs.Add(assemblyCatalog);

            UnityComponent1.InstanceCount = 0;
            unityContainer.RegisterType <IUnityComponent, UnityComponent1>();
            unityContainer.RegisterType <IUnityComponent, UnityComponent2>("component2");

            var collectionOfLazyUnityComponents = unityContainer.Resolve <IEnumerable <Lazy <IUnityComponent> > >();

            Assert.That(collectionOfLazyUnityComponents, Is.Not.Null);

            Assert.That(UnityComponent1.InstanceCount, Is.EqualTo(0));
            var list = new List <Lazy <IUnityComponent> >(collectionOfLazyUnityComponents);

            Assert.That(UnityComponent1.InstanceCount, Is.EqualTo(0));
            Assert.That(list[0].Value, Is.Not.Null);
            Assert.That(list[1].Value, Is.Not.Null);
            Assert.That(UnityComponent1.InstanceCount, Is.EqualTo(1));
            Assert.That(list.Count, Is.EqualTo(2));
        }
        public void UnityCanResolveEnumerableOfLazyTypeRegisteredInMefWithStronglyTypedMetadataTest()
        {
            //throw new NotImplementedException();
            // Setup

            var unityContainer = new UnityContainer();

            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());



            // Add composition support for unity

            unityContainer.AddExtension(new CompositionIntegration(false));

            unityContainer.Configure <CompositionIntegration>().Catalogs.Add(assemblyCatalog);



            var lazyMefComponent = unityContainer.Resolve <IEnumerable <Lazy <IPartWithStronglyTypedMetadata, IMyStronglyTypedMetadataAttribute> > >().ToArray();



            Assert.That(lazyMefComponent, Is.Not.Null);

            Assert.That(lazyMefComponent[0].Value, Is.Not.Null);

            Assert.That(lazyMefComponent[0].Metadata, Is.Not.Null);



            Assert.That(lazyMefComponent[0].Value.GetType(), Is.EqualTo(typeof(StronglyTypedHelloWorldDispatcher)));
        }
示例#16
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 void UnityCanResolveLazyTypeRegisteredInMefWithoutItsMetadataTest()
        {
            // Setup

            var unityContainer = new UnityContainer();

            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());



            // Add composition support for unity

            unityContainer.AddExtension(new CompositionIntegration(false));

            unityContainer.Configure <CompositionIntegration>().Catalogs.Add(assemblyCatalog);



            var lazyMefComponent = unityContainer.Resolve <Lazy <IPartWithTextMetadata> >();



            Assert.That(lazyMefComponent, Is.Not.Null);

            Assert.That(lazyMefComponent.Value, Is.Not.Null);

            Assert.That(lazyMefComponent, Is.Not.Null);
        }
示例#18
0
        public void ResolverWithElementsReturnsLiteralElements()
        {
            IUnityContainer container = new UnityContainer();
            object          o1        = new object();
            object          o2        = new object();
            object          o3        = new object();

            container
            .RegisterInstance <object>("o1", o1)
            .RegisterInstance <object>("o2", o2);

            ResolvedArrayWithElementsResolverPolicy resolver
                = new ResolvedArrayWithElementsResolverPolicy(
                      typeof(object),
                      new LiteralValueDependencyResolverPolicy(o1),
                      new LiteralValueDependencyResolverPolicy(o3));

            container.AddExtension(new InjectedObjectConfigurationExtension(resolver));

            object[] results = (object[])container.Resolve <InjectedObject>().injectedValue;

            Assert.IsNotNull(results);
            Assert.AreEqual(2, results.Length);
            Assert.AreSame(o1, results[0]);
            Assert.AreSame(o3, results[1]);
        }
示例#19
0
        public void UnityCanResolveEnumerableOfTypesRegisteredInUnityAndMefTest()
        {
            // Setup
            var unityContainer  = new UnityContainer();
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());

            MixedComponent1.InstanceCount = 0;
            MixedComponent2.InstanceCount = 0;
            MixedComponent5.InstanceCount = 0;

            // Add composition support for unity
            unityContainer.AddExtension(new CompositionIntegration(true));
            unityContainer.Configure <CompositionIntegration>().Catalogs.Add(assemblyCatalog);

            unityContainer.RegisterType <IMixedComponent, MixedComponent1>("component1");
            unityContainer.RegisterType <IMixedComponent, MixedComponent2>("component2");
            unityContainer.RegisterType <IMixedComponent, MixedComponent3>();

            var collectionOfLazyUnityComponents = unityContainer.Resolve <IEnumerable <IMixedComponent> >();

            Assert.That(collectionOfLazyUnityComponents, Is.Not.Null);

            Assert.That(MixedComponent1.InstanceCount, Is.EqualTo(1));
            Assert.That(MixedComponent2.InstanceCount, Is.EqualTo(1));
            Assert.That(MixedComponent5.InstanceCount, Is.EqualTo(1));

            var list = new List <IMixedComponent>(collectionOfLazyUnityComponents);

            Assert.That(list.Count, Is.EqualTo(5));
            Assert.That(list.OfType <MixedComponent1>().Count(), Is.EqualTo(1));
            Assert.That(list.OfType <MixedComponent2>().Count(), Is.EqualTo(1));
            Assert.That(list.OfType <MixedComponent3>().Count(), Is.EqualTo(1));
            Assert.That(list.OfType <MixedComponent4>().Count(), Is.EqualTo(1));
            Assert.That(list.OfType <MixedComponent5>().Count(), Is.EqualTo(1));
        }
示例#20
0
        public static UnityContainer RegisterTypes(UnityContainer container)
        {
            var mock = new Mock <IHttpContextAccessor>();

            container.RegisterInstance(mock.Object);

            container.RegisterType <ILoggerFactory, LoggerFactory>(
                new ContainerControlledLifetimeManager(), new InjectionConstructor(new ResolvedParameter <IEnumerable <ILoggerProvider> >())
                );
            container.AddExtension(new Diagnostic());
            container.AddNewExtension <LoaderConfigurationExtension>();
            container.RegisterType <IContentDefinitionService, ContentDefinitionService>();
            container.RegisterType <ISettingsService, SettingsService>();
            container.RegisterType <IArticleService, ArticleServiceFake>();
            container.RegisterType <IProductService, FakeProductLoader>();
            container.RegisterType <IConnectionProvider, ConnectionProviderFake>(new InjectionConstructor("test"));

            container.RegisterType <ICacheProvider, CacheProvider>(new ContainerControlledLifetimeManager());
            container.RegisterType <VersionedCacheProviderBase>(new ContainerControlledLifetimeManager());
            container.RegisterType <IContentInvalidator, DpcContentInvalidator>();
            container.RegisterType <IUserProvider, ProductCatalog.Actions.Services.AlwaysAdminUserProvider>();
            container.RegisterInstance <ICacheItemWatcher>(new CacheItemWatcherFake());


            // логируем в консоль
            container.RegisterInstance <ILogger>(new TextWriterLogger(Console.Out));

            return(container);
        }
        public void ContainerControlledLifetimeReturnsSameInstanceFromMultipleThreads()
        {
            IUnityContainer container = new UnityContainer();

            container.AddExtension(new SpyExtension(new DelayStrategy(), UnityBuildStage.Lifetime));
            container.RegisterType <object>(new ContainerControlledLifetimeManager());

            object result1 = null;
            object result2 = null;

            Thread thread1 = new Thread(delegate()
            {
                result1 = container.Resolve <object>();
            });

            Thread thread2 = new Thread(delegate()
            {
                result2 = container.Resolve <object>();
            });

            thread1.Name = "1";
            thread2.Name = "2";

            thread1.Start();
            thread2.Start();

            thread2.Join();
            thread1.Join();

            Assert.IsNotNull(result1);
            Assert.AreSame(result1, result2);
        }
示例#22
0
        public void SkipsConnectionStringsWithoutProviderNamesOrWithProviderNamesWhichDoNotMapToAProviderFactory()
        {
            DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();
            ConnectionStringsSection      section             = new ConnectionStringsSection();

            section.ConnectionStrings.Add(new ConnectionStringSettings("cs1", "cs1", "System.Data.SqlClient"));
            section.ConnectionStrings.Add(new ConnectionStringSettings("cs2", "cs2"));
            section.ConnectionStrings.Add(new ConnectionStringSettings("cs3", "cs3", "a bogus provider name"));
            section.ConnectionStrings.Add(new ConnectionStringSettings("cs4", "cs4", "System.Data.SqlClient"));
            configurationSource.Add("connectionStrings", section);
            IUnityContainer container = new UnityContainer();

            container.AddExtension(new EnterpriseLibraryCoreExtension(configurationSource));
            container.AddNewExtension <DataAccessBlockExtension>();
            Assert.AreEqual("cs1", container.Resolve <Database>("cs1").ConnectionString);
            Assert.AreEqual("cs4", container.Resolve <Database>("cs4").ConnectionString);
            try
            {
                container.Resolve <Database>("cs2");
                Assert.Fail("should have thrown");
            }
            catch (ResolutionFailedException)
            {
            }
            try
            {
                container.Resolve <Database>("cs3");
                Assert.Fail("should have thrown");
            }
            catch (ResolutionFailedException)
            {
            }
        }
示例#23
0
        static void Main(string[] args)
        {
            var container        = new UnityContainer();
            var connectionString = ConfigurationManager.ConnectionStrings["DataBaseConnection"].ConnectionString;

            container.AddExtension(new DataContainerExtension <HierarchicalLifetimeManager>(connectionString));

            container.RegisterType <IJudgeService, JudgeServiceImplementation>(new HierarchicalLifetimeManager());

            var service = container.Resolve <CheckService>();

            Console.WriteLine("Press any key to exit...");

            while (true)
            {
                try
                {
                    service.Check();
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(ex);
                    Console.ResetColor();
                }
                if (Console.KeyAvailable)
                {
                    break;
                }

                Thread.Sleep(TimeSpan.FromSeconds(1));
            }
        }
示例#24
0
        public void ResolverWithElementsReturnsResolvedElementsForBaseClass()
        {
            IUnityContainer container = new UnityContainer();
            ILogger         o1        = new MockLogger();
            ILogger         o2        = new SpecialLogger();

            container
            .RegisterInstance <ILogger>("o1", o1)
            .RegisterInstance <ILogger>("o2", o2);

            ResolvedArrayWithElementsResolverPolicy resolver
                = new ResolvedArrayWithElementsResolverPolicy(
                      typeof(ILogger),
                      new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o1"),
                      new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o2"));

            container.AddExtension(new InjectedObjectConfigurationExtension(resolver));

            ILogger[] results = (ILogger[])container.Resolve <InjectedObject>().injectedValue;

            Assert.IsNotNull(results);
            Assert.AreEqual(2, results.Length);
            Assert.AreSame(o1, results[0]);
            Assert.AreSame(o2, results[1]);
        }
        public void ContainerCallsExtensionsInitializeMethod()
        {
            MockContainerExtension extension = new MockContainerExtension();
            IUnityContainer container = new UnityContainer();
            container.AddExtension(extension);

            Assert.IsTrue(extension.InitializeWasCalled);
        }
        /// <summary>
        /// Raises the <see cref="E:System.Windows.Application.Startup" /> event.
        /// </summary>
        /// <param name="e">A <see cref="T:System.Windows.StartupEventArgs" /> that contains the event data.</param>
        protected override void OnStartup(StartupEventArgs e)
        {
            var container = new UnityContainer();

            container.AddExtension(new MainModuleContainerConfiguration());

            base.OnStartup(e);
        }
        public void TestInitialize()
        {
            container = new UnityContainer();
            var mock = new MockContainerExtension();

            container.AddExtension(mock);
            context = ((IMockConfiguration)mock).ExtensionContext;
        }
示例#28
0
        protected override IContainerExtension CreateContainerExtension()
        {
            // https://stackoverflow.com/a/60890148/9530917
            var container = new UnityContainer();

            container.AddExtension(new Diagnostic());
            return(new UnityContainerExtension(container));
        }
示例#29
0
        private static IUnityContainer CreateContainer()
        {
            var ass  = System.Reflection.Assembly.GetAssembly(typeof(IoCManager));
            var uri  = new Uri(ass.CodeBase.Substring(0, ass.CodeBase.LastIndexOf("/", StringComparison.Ordinal)));
            var path = uri.LocalPath;
            var ext  = new AssemblyNamingConventionScanExtension(path);

            var fullPath  = Path.Combine(path, "ioc.config");
            var container = new UnityContainer();

            if (File.Exists(fullPath))
            {
                var inp = new FileStream(fullPath, FileMode.Open);

                try
                {
                    var root        = XElement.Load(inp);
                    var conventions = root.Elements("NamingConvention");
                    foreach (var convention in conventions)
                    {
                        var type = convention.Attribute("type");
                        if (type != null)
                        {
                            var convType = Type.GetType(type.Value);
                            if (convType != null)
                            {
                                var obj  = Activator.CreateInstance(convType);
                                var conv = obj as NamingConvention;
                                if (conv != null)
                                {
                                    var assemblies = convention.Elements("Assembly").Select(asm =>
                                                                                            new Assembly
                                    {
                                        Name     = asm.Attribute("name").Value,
                                        FullName = asm.Attribute("fullname").Value
                                    });

                                    conv.Assemblies = assemblies;
                                    ext.RegisterNamingConvention(conv);
                                }
                            }
                        }
                    }

                    container.AddExtension(ext);
                }
                catch (Exception)
                {
                    throw new IoCException("IoC configuration corrupted");
                }
                finally
                {
                    inp.Close();
                }
            }

            return(container);
        }
        public void CheckExtensionAddedToContainer()
        {
            Diagnostic      extension = new Diagnostic();
            IUnityContainer uc        = new UnityContainer();

            uc.AddExtension(extension);

            Assert.AreSame(uc, extension.Container);
        }
示例#31
0
        public void ContainerCallsExtensionsInitializeMethod()
        {
            MockContainerExtension extension = new MockContainerExtension();
            IUnityContainer        container = new UnityContainer();

            container.AddExtension(extension);

            Assert.True(extension.InitializeWasCalled);
        }
        public void ExtensionReceivesExtensionContextInInitialize()
        {
            MockContainerExtension extension = new MockContainerExtension();
            IUnityContainer container = new UnityContainer();
            container.AddExtension(extension);

            Assert.IsNotNull(extension.Context);
            Assert.AreSame(container, extension.Context.Container);
        }
示例#33
0
        public void CanLookupExtensionByClassName()
        {
            MockContainerExtension extension = new MockContainerExtension();
            IUnityContainer container = new UnityContainer();
            container.AddExtension(extension);

            MockContainerExtension result = container.Configure<MockContainerExtension>();

            Assert.AreSame(extension, result);
        }
示例#34
0
        public void ResolverWithElementsReturnsResolvedElementsForBaseClass()
        {
            IUnityContainer container = new UnityContainer();
            ILogger o1 = new MockLogger();
            ILogger o2 = new SpecialLogger();

            container
                .RegisterInstance<ILogger>("o1", o1)
                .RegisterInstance<ILogger>("o2", o2);

            ResolvedArrayWithElementsResolverPolicy resolver
                = new ResolvedArrayWithElementsResolverPolicy(
                    typeof(ILogger),
                    new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o1"),
                    new NamedTypeDependencyResolverPolicy(typeof(ILogger), "o2"));
            container.AddExtension(new InjectedObjectConfigurationExtension(resolver));

            ILogger[] results = (ILogger[])container.Resolve<InjectedObject>().injectedValue;

            Assert.IsNotNull(results);
            Assert.AreEqual(2, results.Length);
            Assert.AreSame(o1, results[0]);
            Assert.AreSame(o2, results[1]);
        }
示例#35
0
        public void ResolverWithElementsReturnsLiteralElements()
        {
            IUnityContainer container = new UnityContainer();
            object o1 = new object();
            object o2 = new object();
            object o3 = new object();

            container
                .RegisterInstance<object>("o1", o1)
                .RegisterInstance<object>("o2", o2);

            ResolvedArrayWithElementsResolverPolicy resolver
                = new ResolvedArrayWithElementsResolverPolicy(
                    typeof(object),
                    new LiteralValueDependencyResolverPolicy(o1),
                    new LiteralValueDependencyResolverPolicy(o3));
            container.AddExtension(new InjectedObjectConfigurationExtension(resolver));

            object[] results = (object[])container.Resolve<InjectedObject>().injectedValue;

            Assert.IsNotNull(results);
            Assert.AreEqual(2, results.Length);
            Assert.AreSame(o1, results[0]);
            Assert.AreSame(o3, results[1]);
        }