private static RuntimePart CreateRuntimePart(ComposedPart part, CompositionConfiguration configuration) { Requires.NotNull(part, nameof(part)); var runtimePart = new RuntimePart( part.Definition.TypeRef, part.Definition.ImportingConstructorOrFactoryRef, part.GetImportingConstructorImports().Select(kvp => CreateRuntimeImport(kvp.Key, kvp.Value, part.Resolver)).ToImmutableArray(), part.Definition.ImportingMembers.Select(idb => CreateRuntimeImport(idb, part.SatisfyingExports[idb], part.Resolver)).ToImmutableArray(), part.Definition.ExportDefinitions.Select(ed => CreateRuntimeExport(ed.Value, part.Definition.Type, ed.Key, part.Resolver)).ToImmutableArray(), part.Definition.OnImportsSatisfiedRef, part.Definition.IsShared ? configuration.GetEffectiveSharingBoundary(part.Definition) : null); return(runtimePart); }
private static RuntimePart CreateRuntimePart(ComposedPart part, CompositionConfiguration configuration) { Requires.NotNull(part, nameof(part)); var partDefinitionType = part.Definition.Type; var importingConstructor = part.Definition.ImportingConstructorInfo; var onImportsSatisfied = part.Definition.OnImportsSatisfied; var runtimePart = new RuntimePart( TypeRef.Get(partDefinitionType, part.Resolver), importingConstructor != null ? new ConstructorRef(importingConstructor, part.Resolver) : default(ConstructorRef), part.GetImportingConstructorImports().Select(kvp => CreateRuntimeImport(kvp.Key, kvp.Value, part.Resolver)).ToImmutableArray(), part.Definition.ImportingMembers.Select(idb => CreateRuntimeImport(idb, part.SatisfyingExports[idb], part.Resolver)).ToImmutableArray(), part.Definition.ExportDefinitions.Select(ed => CreateRuntimeExport(ed.Value, partDefinitionType, ed.Key, part.Resolver)).ToImmutableArray(), onImportsSatisfied != null ? new MethodRef(onImportsSatisfied, part.Resolver) : default(MethodRef), part.Definition.IsShared ? configuration.GetEffectiveSharingBoundary(part.Definition) : null); return(runtimePart); }