public void Initialize() { Reflector <NuPatternGlobalContainer> .GetProperty(x => NuPatternGlobalContainer.Instance).SetValue( null, new CompositionContainer(), null); var catalog = new TypeCatalog(typeof(Foo)); var container = new CompositionContainer(catalog); var compositionService = new NuPatternCompositionService(container); this.binding = new DynamicBinding <IFoo>(new DelegatingCompositionService(compositionService), "Foo"); }
public void WhenAddedExportExistsOnBase_ThenImportManyGetsBoth() { var catalog = new TypeCatalog(typeof(Foo), typeof(Bar)); var container = new CompositionContainer(catalog); var compositionService = new NuPatternCompositionService(container); var binding = new DynamicBinding <IFoo>(new DelegatingCompositionService(compositionService), "Foo"); Assert.True(binding.Evaluate()); Assert.Equal(1, binding.Value.Bars.Count()); using (var context = binding.CreateDynamicContext()) { var bar = new Bar(); context.AddExport <IBar>(bar); var result = binding.Evaluate(context); Assert.True(result); Assert.Equal(2, binding.Value.Bars.Count()); } }
private INuPatternCompositionService CreateCompositionService(IGuidanceExtension extension, string extensionId) { var extensionContainer = new CompositionContainer(extensionsGlobalContainer); // Expose IGuidanceExtension to the container extensionContainer.ComposeExportedValue(extension); extensionContainer.ComposeExportedValue(InstalledGuidanceExtensions.First(r => r.ExtensionId == extensionId)); extensionContainer.ComposeExportedValue <ExportProvider>(extensionContainer); var compositionService = new NuPatternCompositionService(extensionContainer); // Expose IGuidanceExtensionCompositionService to the container extensionContainer.ComposeExportedValue <INuPatternCompositionService>(compositionService); // Satisfy imports at this level, so that the right guidance extension-level stuff is injected instead // (i.e. the guidance extension might have specified an import of the IGudianceExtensionCompositionService and // would have gotten the global one. compositionService.SatisfyImportsOnce(extension); return(compositionService); }
public void WhenAddedExportExistsOnBase_ThenOverridesIt() { var catalog = new TypeCatalog(typeof(Foo), typeof(Bar)); var container = new CompositionContainer(catalog); var compositionService = new NuPatternCompositionService(container); var binding = new DynamicBinding<IFoo>(new DelegatingCompositionService(compositionService), "Foo"); Assert.True(binding.Evaluate()); Assert.NotNull(binding.Value.Bar); using (var context = binding.CreateDynamicContext()) { var bar = new Bar(); context.AddExport<IBar>(bar); var result = binding.Evaluate(context); Assert.True(result); Assert.NotNull(binding.Value.Bar); Assert.Same(bar, binding.Value.Bar); } }
public void Initialize() { Reflector<NuPatternGlobalContainer>.GetProperty(x => NuPatternGlobalContainer.Instance).SetValue( null, new CompositionContainer(), null); var catalog = new TypeCatalog(typeof(Foo)); var container = new CompositionContainer(catalog); var compositionService = new NuPatternCompositionService(container); this.binding = new DynamicBinding<IFoo>(new DelegatingCompositionService(compositionService), "Foo"); }
private INuPatternCompositionService CreateCompositionService(IGuidanceExtension extension, string extensionId) { var extensionContainer = new CompositionContainer(extensionsGlobalContainer); // Expose IGuidanceExtension to the container extensionContainer.ComposeExportedValue(extension); extensionContainer.ComposeExportedValue(InstalledGuidanceExtensions.First(r => r.ExtensionId == extensionId)); extensionContainer.ComposeExportedValue<ExportProvider>(extensionContainer); var compositionService = new NuPatternCompositionService(extensionContainer); // Expose IGuidanceExtensionCompositionService to the container extensionContainer.ComposeExportedValue<INuPatternCompositionService>(compositionService); // Satisfy imports at this level, so that the right guidance extension-level stuff is injected instead // (i.e. the guidance extension might have specified an import of the IGudianceExtensionCompositionService and // would have gotten the global one. compositionService.SatisfyImportsOnce(extension); return compositionService; }