public bool SetProperty(string propertyName, object value, PropertyNameSource propertyNameSource = PropertyNameSource.Default) { if (string.IsNullOrEmpty(propertyName)) { return(false); } var parsedProperty = _valueParser.Parse(value); if (!parsedProperty.IsValid) { return(false); } string bindingProp; if (_specialPropsBindings.TryGetValue(propertyName.ToLower(), out bindingProp)) { SpecialProps[bindingProp] = parsedProperty.Value; } else { switch (_messagePropetiesRules) { case MessagePropetiesRules.None: break; case MessagePropetiesRules.NumericsOnly: if (!_valueParser.IsNumeric(parsedProperty.Value)) { return(false); } break; case MessagePropetiesRules.ListsOnly: if (!_valueParser.IsEnumerable(parsedProperty.Value)) { return(false); } break; default: throw new ArgumentOutOfRangeException(); } Props[_nameFormatter.Format(propertyName, propertyNameSource)] = parsedProperty.Value; } return(true); }