Пример #1
0
        /// <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));
        }