示例#1
0
        private object[] GetFormatArguments(
            IDictionaryAdapter dictionaryAdapter,
            string formattedPropertyName
            )
        {
            var properties = Properties.Split(
                PropertyDelimeters,
                StringSplitOptions.RemoveEmptyEntries
                );
            var arguments = new object[properties.Length];

            for (int i = 0; i < properties.Length; ++i)
            {
                var propertyName = properties[i];
                if (propertyName != formattedPropertyName)
                {
                    arguments[i] = dictionaryAdapter.GetProperty(propertyName, false);
                }
                else
                {
                    arguments[i] = "(recursive)";
                }
            }
            return(arguments);
        }
示例#2
0
        public string Validate(IDictionaryAdapter dictionaryAdapter)
        {
            List <string> errors      = new List <string>();
            var           globalRules = AttributesUtil.GetTypeAttributes <ValidationRuleAttribute>(
                dictionaryAdapter.Meta.Type
                );

            foreach (var property in dictionaryAdapter.This.Properties.Values)
            {
                var propertyRules = AttributesUtil
                                    .GetAttributes <ValidationRuleAttribute>(property.Property)
                                    .Select(x => (IValidationRule)x);
                var propertyValue = dictionaryAdapter.GetProperty(property.PropertyName, true);
                ApplyValidationRules(
                    dictionaryAdapter,
                    propertyRules,
                    property,
                    propertyValue,
                    errors
                    );
                ApplyValidationRules(
                    dictionaryAdapter,
                    globalRules,
                    property,
                    propertyValue,
                    errors
                    );
            }

            return(string.Join(Environment.NewLine, errors.ToArray()));
        }
		public bool Equals(IDictionaryAdapter adapter1, IDictionaryAdapter adapter2)
		{
			var id1 = adapter1.GetProperty("Id", false);
			if (id1 == null) return false;

			var id2 = adapter2.GetProperty("Id", false);
			if (id2 == null) return false;

			return id1.Equals(id2);
		}
            protected override void VisitProperty(
                IDictionaryAdapter dictionaryAdapter,
                PropertyDescriptor property,
                object state
                )
            {
                var value = dictionaryAdapter.GetProperty(property.PropertyName, true);

                CollectHashCode(property, GetValueHashCode(value));
            }
		public bool GetHashCode(IDictionaryAdapter adapter, out int hashCode)
		{
			var id = adapter.GetProperty("Id", false);
			if (id != null)
			{
				hashCode = id.GetHashCode();
				return true;
			}
			hashCode = 0;
			return false;
		}
		public string Validate(IDictionaryAdapter dictionaryAdapter, PropertyDescriptor property)
		{
			List<String> errors = new List<string>();
			var globalRules = AttributesUtil.GetTypeAttributes<IValidationRule>(dictionaryAdapter.Meta.Type);

			var propertyRules = AttributesUtil.GetAttributes<IValidationRule>(property.Property);
			var propertyValue = dictionaryAdapter.GetProperty(property.PropertyName, true);
			ApplyValidationRules(dictionaryAdapter, propertyRules, property, propertyValue, errors);
			ApplyValidationRules(dictionaryAdapter, globalRules, property, propertyValue, errors);

			return String.Join(Environment.NewLine, errors.ToArray());
		}
示例#7
0
        public bool GetHashCode(IDictionaryAdapter adapter, out int hashCode)
        {
            var id = adapter.GetProperty("Id", false);

            if (id != null)
            {
                hashCode = id.GetHashCode();
                return(true);
            }
            hashCode = 0;
            return(false);
        }
示例#8
0
        public string Validate(IDictionaryAdapter dictionaryAdapter, PropertyDescriptor property)
        {
            List <String> errors      = new List <string>();
            var           globalRules = AttributesUtil.GetTypeAttributes <IValidationRule>(dictionaryAdapter.Meta.Type);

            var propertyRules = AttributesUtil.GetAttributes <IValidationRule>(property.Property);
            var propertyValue = dictionaryAdapter.GetProperty(property.PropertyName, true);

            ApplyValidationRules(dictionaryAdapter, propertyRules, property, propertyValue, errors);
            ApplyValidationRules(dictionaryAdapter, globalRules, property, propertyValue, errors);

            return(String.Join(Environment.NewLine, errors.ToArray()));
        }
            protected override void VisitInterface(
                IDictionaryAdapter dictionaryAdapter,
                PropertyDescriptor property,
                object state
                )
            {
                var nested = (IDictionaryAdapter)dictionaryAdapter.GetProperty(
                    property.PropertyName,
                    true
                    );

                CollectHashCode(property, GetNestedHashCode(nested));
            }
            protected override void VisitCollection(
                IDictionaryAdapter dictionaryAdapter,
                PropertyDescriptor property,
                Type collectionItemType,
                object state
                )
            {
                var collection = (IEnumerable)dictionaryAdapter.GetProperty(
                    property.PropertyName,
                    true
                    );

                CollectHashCode(property, GetCollectionHashcode(collection));
            }
示例#11
0
		public string Validate(IDictionaryAdapter dictionaryAdapter)
		{
			List<String> errors = new List<string>();
			var globalRules = AttributesUtil.GetTypeAttributes<ValidationRuleAttribute>(dictionaryAdapter.Meta.Type);

			foreach (var property in dictionaryAdapter.This.Properties.Values)
			{
				var propertyRules = AttributesUtil.GetAttributes<ValidationRuleAttribute>(property.Property).Select(x => (IValidationRule)x);
				var propertyValue = dictionaryAdapter.GetProperty(property.PropertyName, true);
				ApplyValidationRules(dictionaryAdapter, propertyRules, property, propertyValue, errors);
				ApplyValidationRules(dictionaryAdapter, globalRules, property, propertyValue, errors);
			}

			return String.Join(Environment.NewLine, errors.ToArray());
		}
		private object[] GetFormatArguments(IDictionaryAdapter dictionaryAdapter, string formattedPropertyName)
		{
			var properties = Properties.Split(PropertyDelimeters, StringSplitOptions.RemoveEmptyEntries);
			var arguments = new object[properties.Length];
			for (int i = 0; i < properties.Length; ++i)
			{
				var propertyName = properties[i];
				if (propertyName != formattedPropertyName)
				{
					arguments[i] = dictionaryAdapter.GetProperty(propertyName);
				}
				else
				{
					arguments[i] = "(recursive)";
				}
			}
			return arguments;
		}
示例#13
0
        public string Validate(IDictionaryAdapter dictionaryAdapter, PropertyDescriptor property)
        {
            var key      = dictionaryAdapter.GetKey(property.PropertyName);
            var value    = dictionaryAdapter.GetProperty(property.PropertyName, true);
            var propinfo = property.Property;
            var context  = new ValidationContext(value)
            {
                DisplayName = key,
                MemberName  = propinfo.Name
            };

            var attrs   = propinfo.GetCustomAttributes(true).OfType <ValidationAttribute>().ToArray();
            var results = new System.Collections.Generic.List <ValidationResult>();

            return(Validator.TryValidateValue(value, context, results, attrs) ?
                   String.Empty
                                : string.Join(Environment.NewLine, results.Select(x => x.ErrorMessage)));
        }
示例#14
0
        public bool Equals(IDictionaryAdapter adapter1, IDictionaryAdapter adapter2)
        {
            var id1 = adapter1.GetProperty("Id", false);

            if (id1 == null)
            {
                return(false);
            }

            var id2 = adapter2.GetProperty("Id", false);

            if (id2 == null)
            {
                return(false);
            }

            return(id1.Equals(id2));
        }
示例#15
0
		public string Validate(IDictionaryAdapter dictionaryAdapter, PropertyDescriptor property)
		{
			var key = dictionaryAdapter.GetKey(property.PropertyName);
			var value = dictionaryAdapter.GetProperty(property.PropertyName, true);
			var propinfo = property.Property;
			var context = new ValidationContext(value)
			{
					DisplayName = key,
					MemberName = propinfo.Name
			};

			var attrs = propinfo.GetCustomAttributes(true).OfType<ValidationAttribute>().ToArray();
			var results = new System.Collections.Generic.List<ValidationResult>();

			return Validator.TryValidateValue(value, context, results, attrs) ?
				String.Empty
				: string.Join(Environment.NewLine, results.Select(x => x.ErrorMessage));
		}