/// <summary>
 /// Initializes a new instance of the <see cref="ValidationMessage"/> class.
 /// </summary>
 /// <param name="validationLevel">
 /// The validation level (Error, Warning).
 /// </param>
 /// <param name="messageText">
 /// Validation message text.
 /// </param>
 /// <param name="validationMessageKind">
 /// The validation message kind which indicates what kind of validation 
 /// has been performed (property or entity based).
 /// </param>
 public ValidationMessage(ValidationLevel validationLevel, string messageText, ValidationMessageKind validationMessageKind)
 {
     this.ValidationLevel = validationLevel;
     this.MessageText = messageText;
     this.ValidationMessageKind = validationMessageKind;
     this.ShowMessageOnProperty = true;
     this.ShowMessageInSummary = true;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationMessage"/> class using an existing validation message.
 /// </summary>
 /// <param name="message">
 /// Existing validation message, whose properties should be taken.
 /// </param>
 /// <param name="validationMessageKind">
 /// The validation message kind which indicates what kind of validation has been performed (property or entity based).
 /// If no value is provided, <c>message.ValidationMessageKind</c> will be taken.
 /// </param>
 public ValidationMessage(ValidationMessage message, ValidationMessageKind? validationMessageKind = null)
     : this(message.ValidationLevel,
         message.MessageText,
         message.ShowMessageOnProperty,
         message.ShowMessageInSummary,
         validationMessageKind ?? message.ValidationMessageKind)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationMessage"/> class.
 /// </summary>
 /// <param name="validationLevel">
 /// The validation level (Error, Warning).
 /// </param>
 /// <param name="messageText">
 /// Validation message text.
 /// </param>
 /// <param name="showMessageOnProperty">
 /// Indicates whether the validation message will be shown on the property at the UI.
 /// </param>
 /// <param name="showMessageInSummary">
 /// Indicates whether the validation message will be shown in the validation summary at the UI.
 /// </param>
 /// <param name="validationMessageKind">
 /// The validation message kind which indicates what kind of validation 
 /// has been performed (property or entity based).
 /// </param>
 public ValidationMessage(
     ValidationLevel validationLevel,
     string messageText,
     bool showMessageOnProperty = true,
     bool showMessageInSummary = true,
     ValidationMessageKind? validationMessageKind = null)
 {
     this.ValidationLevel = validationLevel;
     this.MessageText = messageText;
     this.ShowMessageOnProperty = showMessageOnProperty;
     this.ShowMessageInSummary = showMessageInSummary;
     this.ValidationMessageKind = validationMessageKind;
 }
        /// <summary>
        /// Adds validation message for a property to a certain dictionary.
        /// </summary>
        /// <param name="dictionary">The dictionary, where the message should be added.</param>
        /// <param name="propertyName">The property name.</param>
        /// <param name="message">The validation message to add.</param>
        /// <param name="messageKind">The validation message kind (property, entity).</param>
        private void AddPropertyValidationMessage(
            Dictionary<string, List<ValidationMessage>> dictionary, 
            string propertyName, 
            ValidationMessage message, 
            ValidationMessageKind messageKind)
        {
            Guard.AssertNotNull(dictionary, "dictionary");
            Guard.AssertNotNull(message, "message");


            // if the property is already in the dictionary, just add the new message; else, add a new key/value pair
            if (dictionary.ContainsKey(propertyName))
            {
                dictionary[propertyName].Add(new ValidationMessage(message, messageKind));
            }
            else
            {
                dictionary.Add(propertyName, new List<ValidationMessage> { new ValidationMessage(message, messageKind) });
            }
        }