/// <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());
        }
Exemple #2
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());
        }
Exemple #3
0
        public void Factory_export_provider_can_resolve_additional_exports_from_the_factory()
        {
            // 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));
        }
Exemple #4
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 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)));
        }
        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)));
        }
Exemple #7
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 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 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)));
        }