/// <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 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()); }
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)); }
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))); }
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))); }