internal RuntimeExportProvider(RuntimeComposition composition, ExportProvider parent, ImmutableHashSet <string> freshSharingBoundaries) : base(parent, freshSharingBoundaries) { Requires.NotNull(composition, nameof(composition)); this.composition = composition; }
public Task SaveAsync(CompositionConfiguration configuration, Stream cacheStream, CancellationToken cancellationToken = default(CancellationToken)) { Requires.NotNull(configuration, nameof(configuration)); Requires.NotNull(cacheStream, nameof(cacheStream)); Requires.Argument(cacheStream.CanWrite, "cacheStream", Strings.WritableStreamRequired); return(Task.Run(async delegate { var compositionRuntime = RuntimeComposition.CreateRuntimeComposition(configuration); await this.SaveAsync(compositionRuntime, cacheStream, cancellationToken).ConfigureAwait(false); })); }
internal void Write(RuntimeComposition compositionRuntime) { Requires.NotNull(compositionRuntime, nameof(compositionRuntime)); Verify.Operation(this.writer is object, "This instance not configured for writing."); using (this.Trace("RuntimeComposition")) { this.Write(compositionRuntime.Parts, this.Write); this.Write(compositionRuntime.MetadataViewsAndProviders); } this.TraceStats(); }
internal void Write(RuntimeComposition compositionRuntime) { Requires.NotNull(this.writer, "writer"); Requires.NotNull(compositionRuntime, nameof(compositionRuntime)); using (this.Trace("RuntimeComposition")) { this.Write(compositionRuntime.Parts, this.Write); this.Write(compositionRuntime.MetadataViewsAndProviders); } this.TraceStats(); }
public Task SaveAsync(RuntimeComposition composition, Stream cacheStream, CancellationToken cancellationToken = default(CancellationToken)) { Requires.NotNull(composition, nameof(composition)); Requires.NotNull(cacheStream, nameof(cacheStream)); Requires.Argument(cacheStream.CanWrite, "cacheStream", Strings.WritableStreamRequired); return(Task.Run(() => { using (var writer = new BinaryWriter(cacheStream, TextEncoding, leaveOpen: true)) { var context = new SerializationContext(writer, composition.Parts.Count * 5, composition.Resolver); context.Write(composition); context.FinalizeObjectTableCapacity(); } })); }
internal RuntimeComposition ReadRuntimeComposition() { Verify.Operation(this.reader is object, "This instance not configured for reading."); RuntimeComposition result; using (this.Trace("RuntimeComposition")) { var parts = this.ReadList(this.reader, this.ReadRuntimePart); var metadataViewsAndProviders = this.ReadMetadataViewsAndProviders(); result = RuntimeComposition.CreateRuntimeComposition(parts, metadataViewsAndProviders, this.Resolver); } this.TraceStats(); return(result); }
internal RuntimeComposition ReadRuntimeComposition() { Requires.NotNull(this.reader, "reader"); RuntimeComposition result; using (this.Trace("RuntimeComposition")) { var parts = this.ReadList(this.reader, this.ReadRuntimePart); var metadataViewsAndProviders = this.ReadMetadataViewsAndProviders(); result = RuntimeComposition.CreateRuntimeComposition(parts, metadataViewsAndProviders, this.Resolver); } this.TraceStats(); return(result); }
private void ThrowIfExportedValueIsNotAssignableToImport(RuntimeComposition.RuntimeImport import, RuntimeComposition.RuntimeExport export, object?exportedValue) { Requires.NotNull(import, nameof(import)); Requires.NotNull(export, nameof(export)); if (exportedValue != null) { if (!import.ImportingSiteTypeWithoutCollection.GetTypeInfo().IsAssignableFrom(exportedValue.GetType())) { throw new CompositionFailedException( string.Format( CultureInfo.CurrentCulture, Strings.ExportedValueNotAssignableToImport, RuntimeComposition.GetDiagnosticLocation(export), RuntimeComposition.GetDiagnosticLocation(import))); } } }
protected override void SatisfyImports() { if (this.Value == null && this.partDefinition.ImportingMembers.Count > 0) { // The value should have been instantiated by now. If it hasn't been, // it's not an instantiable part. And such a part cannot have imports set. this.ThrowPartNotInstantiableException(); } try { foreach (var import in this.partDefinition.ImportingMembers) { try { ValueForImportSite value = this.OwningExportProvider.GetValueForImportSite(this, import); if (value.ValueShouldBeSet) { SetImportingMember(this.Value !, import.ImportingMember !, value.Value); } } catch (CompositionFailedException ex) { throw new CompositionFailedException( string.Format( CultureInfo.CurrentCulture, Strings.ErrorWhileSettingImport, RuntimeComposition.GetDiagnosticLocation(import)), ex); } } } catch (TargetInvocationException ex) { throw this.PrepareExceptionForFaultedPart(ex); } }
public IExportProviderFactory CreateExportProviderFactory() { var composition = RuntimeComposition.CreateRuntimeComposition(this); return(composition.CreateExportProviderFactory()); }
internal RuntimeExportProvider(RuntimeComposition composition) : base(Requires.NotNull(composition, nameof(composition)).Resolver) { this.composition = composition; }
internal RuntimeExportProvider(RuntimeComposition composition, ReportFaultCallback faultCallback) : this(composition) { this.faultCallback = faultCallback; }
internal RuntimeExportProviderFactory(RuntimeComposition composition) { Requires.NotNull(composition, nameof(composition)); this.composition = composition; }