private void SetImport(ImportingItem item, Export[] exports) { object value = item.CastExportsToImportType(exports); this._invokeImportsSatisfied = true; this._importValues[item.Definition] = value; }
private void SetImport(ImportingItem item, Export[] exports) { object?value = item.CastExportsToImportType(exports); lock (_lock) { _invokeImportsSatisfied = true; ImportValues[item.Definition] = value; } }
private void UseImportedValues <TImportDefinition>(IEnumerable <TImportDefinition> definitions, Action <ImportingItem, TImportDefinition, object> useImportValue, bool errorIfMissing) where TImportDefinition : ImportDefinition { var result = CompositionResult.SucceededResult; foreach (var definition in definitions) { ImportingItem import = GetImportingItemFromDefinition(definition); object value; if (!TryGetImportValue(definition, out value)) { if (!errorIfMissing) { continue; } if (definition.Cardinality == ImportCardinality.ExactlyOne) { var error = CompositionError.Create( CompositionErrorId.ImportNotSetOnPart, Strings.ImportNotSetOnPart, this.Definition.GetPartType().FullName, definition.ToString()); result = result.MergeError(error); continue; } else { value = import.CastExportsToImportType(new Export[0]); } } useImportValue(import, definition, value); } result.ThrowOnErrors(); }