Esempio n. 1
0
        public void Factory_export_provider_can_resolve_service_registered_using_factory_method()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider()
                                  .Register(typeof(IExternalComponent), ep => new ExternalComponent1())
                                  .Register(typeof(ExternalComponent2), ep => new ExternalComponent2());
            var container = new CompositionContainer(assemblyCatalog, provider);

            var externalComponent = container.GetExportedValue <IExternalComponent>();

            Assert.That(externalComponent, Is.Not.Null);
            Assert.That(externalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent1)));

            var externalComponent2 = container.GetExportedValue <ExternalComponent2>();

            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var mefComponent = container.GetExportedValue <IMefComponent>();

            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
        }
Esempio n. 2
0
        public void Factory_export_provider_executes_the_factory_each_time_the_instance_is_requested()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider(typeof(ExternalComponent2), ep =>
            {
                count++;
                return(new ExternalComponent2());
            });
            var container = new CompositionContainer(assemblyCatalog, provider);

            var externalComponent1 = container.GetExportedValue <ExternalComponent2>();

            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var externalComponent2 = container.GetExportedValue <ExternalComponent2>();

            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            Assert.That(count, Is.EqualTo(2));
        }
Esempio n. 3
0
        public void Factory_export_provider_can_resolve_single_instance_given_by_registration_name_registered_using_generic_overload()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider();
            var container       = new CompositionContainer(assemblyCatalog, provider);

            provider.SourceProvider = container;

            provider.RegisterInstance <IExternalComponent>("ext2", ep =>
            {
                count++;
                return(new ExternalComponent2());
            });

            var externalComponent1 = container.GetExportedValue <IExternalComponent>("ext2");

            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var externalComponent2 = container.GetExportedValue <IExternalComponent>("ext2");

            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            Assert.That(count, Is.EqualTo(1));
            Assert.That(externalComponent1, Is.EqualTo(externalComponent2));
        }
Esempio n. 4
0
        public void Factory_export_provider_can_resolve_additional_exports_from_the_container()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider()
                                  .RegisterInstance <IExternalComponent>(ep => new ExternalComponent2())
                                  .Register <IExternalComponent>("ext", ep => new ExternalComponent4(
                                                                     ep.GetExportedValue <IExternalComponent>(),
                                                                     ep.GetExportedValue <IMefComponent>()));

            var container = new CompositionContainer(assemblyCatalog, provider);

            provider.SourceProvider = container;

            var externalComponent1 = container.GetExportedValue <IExternalComponent>("ext");

            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent4)));
            var externalComponent14 = (ExternalComponent4)externalComponent1;

            Assert.That(externalComponent14.ExternalComponent, Is.Not.Null);
            Assert.That(externalComponent14.MefComponent, Is.Not.Null);
            Assert.That(externalComponent14.ExternalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
            Assert.That(externalComponent14.MefComponent.GetType(), Is.EqualTo(typeof(MefComponent1)));
        }
Esempio n. 5
0
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        public ViewModelLocator()
        {
            if (GalaSoft.MvvmLight.ViewModelBase.IsInDesignModeStatic)
            {
                m_Container = new CompositionContainer(
                    new DesignTimeCatalog(
                        new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly())));
            }
            else
            {
            #if Db4o
                Db4objects.Db4o.Db4oFactory.Configure().CallConstructors(true);
                var server = Db4objects.Db4o.CS.Db4oClientServer.OpenServer(c_Storage, 0);
                var factory = new Func<ExportProvider, IDomainContext>(
                    ep => new Domain.Db4o.Db4oDomainContext(server.OpenClient()));
            #elif Ef
                var factory = new DelegateDomainContextFactory(() => new Domain.Ef.EfDomainContext());
            #endif

                var provider = new FactoryExportProvider();
                provider.Register<IDomainContext>(factory);

                m_Container = new CompositionContainer(
                    new DesignTimeCatalog(
                        new AggregateCatalog(
                            new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()),
                            new DirectoryCatalog("Plugins"))),
                    provider);

            }
            m_Container.ComposeExportedValue<IMessageBus>(new MessageBus());
        }
Esempio n. 6
0
        public void Factory_export_provider_can_resolve_single_instance()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider();
            var container       = new CompositionContainer(assemblyCatalog, provider);

            provider.RegisterInstance(typeof(IExternalComponent), ep =>
            {
                count++;
                return(new ExternalComponent1());
            });

            var externalComponent1 = container.GetExportedValue <IExternalComponent>();

            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));

            var externalComponent2 = container.GetExportedValue <IExternalComponent>();

            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent1)));

            Assert.That(count, Is.EqualTo(1));
            Assert.That(externalComponent1, Is.EqualTo(externalComponent2));
        }
Esempio n. 7
0
        /// <summary>
        /// Initializes a new instance of the ViewModelLocator class.
        /// </summary>
        public ViewModelLocator()
        {
            if (GalaSoft.MvvmLight.ViewModelBase.IsInDesignModeStatic)
            {
                m_Container = new CompositionContainer(
                    new DesignTimeCatalog(
                        new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly())));
            }
            else
            {
#if Db4o
                Db4objects.Db4o.Db4oFactory.Configure().CallConstructors(true);
                var server  = Db4objects.Db4o.CS.Db4oClientServer.OpenServer(c_Storage, 0);
                var factory = new Func <ExportProvider, IDomainContext>(
                    ep => new Domain.Db4o.Db4oDomainContext(server.OpenClient()));
#elif Ef
                var factory = new DelegateDomainContextFactory(() => new Domain.Ef.EfDomainContext());
#endif

                var provider = new FactoryExportProvider();
                provider.Register <IDomainContext>(factory);

                m_Container = new CompositionContainer(
                    new DesignTimeCatalog(
                        new AggregateCatalog(
                            new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()),
                            new DirectoryCatalog("Plugins"))),
                    provider);
            }
            m_Container.ComposeExportedValue <IMessageBus>(new MessageBus());
        }
        /// <summary>
        /// Initializes a new instance of <see cref="ContainerExportProvider"/> class.
        /// </summary>
        /// <param name="containerAdapter">An instance of the <see cref="IContainerAdapter"/> interface.</param>
        public ContainerExportProvider(IContainerAdapter containerAdapter)
        {
            if (containerAdapter == null)
                throw new ArgumentNullException("containerAdapter");

            this.factoryProvider = new PrivateFactoryExportProvider(FactoryMethod);
            this.containerAdapter = containerAdapter;
            this.containerAdapter.RegisteringComponent += OnRegisteringComponentHandler;
            
            // Initialize the adapter
            this.containerAdapter.Initialize();
        }
        /// <summary>
        /// Initializes a new instance of <see cref="ContainerExportProvider"/> class.
        /// </summary>
        /// <param name="containerAdapter">An instance of the <see cref="IContainerAdapter"/> interface.</param>
        public ContainerExportProvider(IContainerAdapter containerAdapter)
        {
            if (containerAdapter == null)
            {
                throw new ArgumentNullException("containerAdapter");
            }

            this.factoryProvider  = new PrivateFactoryExportProvider(FactoryMethod);
            this.containerAdapter = containerAdapter;
            this.containerAdapter.RegisteringComponent += OnRegisteringComponentHandler;

            // Initialize the adapter
            this.containerAdapter.Initialize();
        }
        public void ExportProviderResolvesServiceRegisteredByTypeAndOrRegistrationNameTest()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider(FactoryMethod1);
            var container = new CompositionContainer(assemblyCatalog, provider);

            // Registration
            provider.Register(typeof(IExternalComponent));
            provider.Register(typeof(IExternalComponent), "external2");

            var mefComponent = container.GetExportedValue<IMefComponent>("component3");
            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
Esempio n. 11
0
        public void Export_provider_can_resolve_service_registered_by_type_and_or_registration_name()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider(FactoryMethod1);
            var container       = new CompositionContainer(assemblyCatalog, provider);

            // Registration
            provider.Register(typeof(IExternalComponent));
            provider.Register(typeof(IExternalComponent), "external2");

            var mefComponent = container.GetExportedValue <IMefComponent>("component3");

            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
        public void ExportProviderProperlyResolvesServicesFromManyExportProvidersTest()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider1 = new FactoryExportProvider(FactoryMethod2_1);
            var provider2 = new FactoryExportProvider(FactoryMethod2_2);
            var container = new CompositionContainer(assemblyCatalog, provider1, provider2);

            // Registration
            provider1.Register(typeof(IExternalComponent));
            provider2.Register(typeof(IExternalComponent), "external2");

            var mefComponent = container.GetExportedValue<IMefComponent>("component3");
            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            mefComponent = container.GetExportedValue<IMefComponent>("component4");
            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
Esempio n. 13
0
        public void Factory_export_provider_throws_exception_when_resolving_unknown_parts()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider        = new FactoryExportProvider();
            var container       = new CompositionContainer(assemblyCatalog, provider);

            provider.SourceProvider = provider;

            provider.RegisterInstance <IExternalComponent>("ext", ep => new ExternalComponent2());


            Assert.That(delegate
            {
                container.GetExportedValue <IExternalComponent>();
            }, Throws.TypeOf <ImportCardinalityMismatchException>());

            var externalComponent2 = container.GetExportedValue <IExternalComponent>("ext");

            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
Esempio n. 14
0
        public void Container_can_resolve_services_from_two_factory_export_providers()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider1       = new FactoryExportProvider(FactoryMethod2_1);
            var provider2       = new FactoryExportProvider(FactoryMethod2_2);
            var container       = new CompositionContainer(assemblyCatalog, provider1, provider2);

            // Registration
            provider1.Register(typeof(IExternalComponent));
            provider2.Register(typeof(IExternalComponent), "external2");

            var mefComponent = container.GetExportedValue <IMefComponent>("component3");

            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            mefComponent = container.GetExportedValue <IMefComponent>("component4");
            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
        public void Export_provider_can_resolve_service_registered_by_type_and_registration_name()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider(FactoryMethod1);
            var container = new CompositionContainer(assemblyCatalog, provider);

            // Registration
            provider.Register(typeof(IExternalComponent), "external2");

            var externalComponent = container.GetExportedValue<IExternalComponent>("external2");
            Assert.That(externalComponent, Is.Not.Null);
            Assert.That(externalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var mefComponent = container.GetExportedValue<IMefComponent>("component2");
            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
        public void FactoryExportProviderResolvesSingleInstanceTest()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider();
            var container = new CompositionContainer(assemblyCatalog, provider);

            provider.RegisterInstance(typeof(IExternalComponent), ep =>
            {
                count++;
                return new ExternalComponent1();
            });

            var externalComponent1 = container.GetExportedValue<IExternalComponent>();
            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));

            var externalComponent2 = container.GetExportedValue<IExternalComponent>();
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent1)));

            Assert.That(count, Is.EqualTo(1));
            Assert.That(externalComponent1, Is.EqualTo(externalComponent2));
        }
        public void FactoryExportProviderResolvesServiceRegisteredUsingGivenFactoryMethodTest()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider()
                .Register(typeof (IExternalComponent), ep => new ExternalComponent1())
                .Register(typeof (ExternalComponent2), ep => new ExternalComponent2());
            var container = new CompositionContainer(assemblyCatalog, provider);

            var externalComponent = container.GetExportedValue<IExternalComponent>();
            Assert.That(externalComponent, Is.Not.Null);
            Assert.That(externalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent1)));

            var externalComponent2 = container.GetExportedValue<ExternalComponent2>();
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var mefComponent = container.GetExportedValue<IMefComponent>();
            Assert.That(mefComponent, Is.Not.Null);
            Assert.That(mefComponent.Component1.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
            Assert.That(mefComponent.Component2.GetType(), Is.EqualTo(typeof(ExternalComponent1)));
        }
        public void FactoryExportProviderResolvesAdditionalExportsFromTheFactoryTest()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider();
            var container = new CompositionContainer(assemblyCatalog, provider);
            provider.SourceProvider = provider;

            provider.RegisterInstance<IExternalComponent>(ep => new ExternalComponent2());
            provider.Register<IExternalComponent>("ext3", ep => new ExternalComponent3(ep.GetExportedValue<IExternalComponent>()));

            var externalComponent1 = container.GetExportedValue<IExternalComponent>("ext3");
            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent3)));
            var externalComponent13 = (ExternalComponent3) externalComponent1;
            Assert.That(externalComponent13.ExternalComponent, Is.Not.Null);
            Assert.That(externalComponent13.ExternalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var externalComponent2 = container.GetExportedValue<IExternalComponent>("ext3");
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent3)));
            var externalComponent23 = (ExternalComponent3)externalComponent1;
            Assert.That(externalComponent23.ExternalComponent, Is.Not.Null);
            Assert.That(externalComponent23.ExternalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            Assert.That(externalComponent13.ExternalComponent, Is.SameAs(externalComponent23.ExternalComponent));
        }
        public void FactoryExportProviderResolvesAdditionalExportsFromTheContainerTest()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider()
                .RegisterInstance<IExternalComponent>(ep => new ExternalComponent2())
                .Register<IExternalComponent>("ext", ep => new ExternalComponent4(
                                                               ep.GetExportedValue<IExternalComponent>(),
                                                               ep.GetExportedValue<IMefComponent>()));

            var container = new CompositionContainer(assemblyCatalog, provider);
            provider.SourceProvider = container;

            var externalComponent1 = container.GetExportedValue<IExternalComponent>("ext");
            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent4)));
            var externalComponent14 = (ExternalComponent4)externalComponent1;
            Assert.That(externalComponent14.ExternalComponent, Is.Not.Null);
            Assert.That(externalComponent14.MefComponent, Is.Not.Null);
            Assert.That(externalComponent14.ExternalComponent.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
            Assert.That(externalComponent14.MefComponent.GetType(), Is.EqualTo(typeof(MefComponent1)));
        }
        public void FactoryExportProviderExecutesTheFactoryEachTimeTheInstanceIsNeadedTest()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider(typeof (ExternalComponent2), ep =>
            {
                count++;
                return new ExternalComponent2();
            });
            var container = new CompositionContainer(assemblyCatalog, provider);

            var externalComponent1 = container.GetExportedValue<ExternalComponent2>();
            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var externalComponent2 = container.GetExportedValue<ExternalComponent2>();
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            Assert.That(count, Is.EqualTo(2));
        }
        public void FactoryExportProviderDoesNotResolveUnknownPartsTest()
        {
            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider();
            var container = new CompositionContainer(assemblyCatalog, provider);
            provider.SourceProvider = provider;

            provider.RegisterInstance<IExternalComponent>("ext", ep => new ExternalComponent2());

            Assert.That(delegate
                        {
                            container.GetExportedValue<IExternalComponent>();
                        }, Throws.TypeOf<ImportCardinalityMismatchException>());

            var externalComponent2 = container.GetExportedValue<IExternalComponent>("ext");
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));
        }
        public void Factory_export_provider_can_resolve_single_instance_given_by_registration_name_registered_using_generic_overload()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider();
            var container = new CompositionContainer(assemblyCatalog, provider);
            provider.SourceProvider = container;

            provider.RegisterInstance<IExternalComponent>("ext2", ep =>
            {
                count++;
                return new ExternalComponent2();
            });

            var externalComponent1 = container.GetExportedValue<IExternalComponent>("ext2");
            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var externalComponent2 = container.GetExportedValue<IExternalComponent>("ext2");
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            Assert.That(count, Is.EqualTo(1));
            Assert.That(externalComponent1, Is.EqualTo(externalComponent2));
        }
        public void Factory_export_provider_executes_the_factory_each_time_the_instance_is_requested()
        {
            var count = 0;

            // Setup
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            var provider = new FactoryExportProvider(typeof (ExternalComponent2), ep =>
            {
                count++;
                return new ExternalComponent2();
            });
            var container = new CompositionContainer(assemblyCatalog, provider);

            var externalComponent1 = container.GetExportedValue<ExternalComponent2>();
            Assert.That(externalComponent1, Is.Not.Null);
            Assert.That(externalComponent1.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            var externalComponent2 = container.GetExportedValue<ExternalComponent2>();
            Assert.That(externalComponent2, Is.Not.Null);
            Assert.That(externalComponent2.GetType(), Is.EqualTo(typeof(ExternalComponent2)));

            Assert.That(count, Is.EqualTo(2));
        }