/// <summary> /// Method to get a basic description of a given constraint for output. /// </summary> /// <param name="constraint">The Constraint which we want information about.</param> /// <param name="export">The export we are matching the constraint against.</param> /// <returns>A string providing some details about the given constraint.</returns> private string GetConstraintString(IImportSatisfiabilityConstraint constraint, PartExport export) { if (constraint == null || export == null) { return(Strings.DoesNotExists); } string constraintString = constraint.ToString() !; string actualValue = export.ToString() !; // Try to treat the constraint as an indentity constraint if (constraint is ExportTypeIdentityConstraint) { var identityConstraint = (ExportTypeIdentityConstraint)constraint; constraintString = string.Format( CultureInfo.CurrentCulture, Strings.TypeFormat, identityConstraint.TypeIdentityName); actualValue = string.Format( CultureInfo.CurrentCulture, Strings.TypeFormat, export.ExportingType); } else if (constraint is ExportMetadataValueImportConstraint) { // Try to treat the constraint as an metadata constraint var metadataConstraint = (ExportMetadataValueImportConstraint)constraint; var exportDetails = export.ExportDetails; string keyName = metadataConstraint.Name; constraintString = string.Format( CultureInfo.CurrentCulture, Strings.MetadataFormat, keyName, metadataConstraint.Value); string pairValue = Strings.MissingKeyText; if (exportDetails.Metadata.ContainsKey(keyName)) { var keyValue = exportDetails.Metadata[keyName]; pairValue = keyValue != null?keyValue.ToString() !: Strings.DoesNotExists; } actualValue = string.Format( CultureInfo.CurrentCulture, Strings.MetadataFormat, keyName, pairValue); } // If it is neither just return the toString text of the two parameters return(string.Format( CultureInfo.CurrentCulture, Strings.ExpectedFoundFormat, constraintString, actualValue)); }