コード例 #1
0
ファイル: UnitTest1.cs プロジェクト: rgvlee/StackOverflow
        public void ResolvePropertyName_ChildProperty_ReturnsExpectedPropertyName()
        {
            Expression <Func <PatchDTO, string> > memberAccessor = patchDto => patchDto.Data[0].Id;
            var resolvedPropertyName = ValidatorOptions.PropertyNameResolver(typeof(PatchDTO), memberAccessor.GetMember(), memberAccessor);

            Assert.That(resolvedPropertyName, Is.EqualTo("Id"));
            //Assert.That(resolvedPropertyName, Is.EqualTo("Data[0].Id"));
        }
コード例 #2
0
        /// <summary>
        /// Creates a new property rule.
        /// </summary>
        /// <param name="member">Property</param>
        /// <param name="propertyFunc">Function to get the property value</param>
        /// <param name="expression">Lambda expression used to create the rule</param>
        /// <param name="cascadeModeThunk">Function to get the cascade mode.</param>
        /// <param name="typeToValidate">Type to validate</param>
        /// <param name="containerType">Container type that owns the property</param>
        public PropertyRule(MemberInfo member, PropertySelector propertyFunc, Expression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType)
        {
            Member                = member;
            PropertyFunc          = propertyFunc;
            Expression            = expression;
            OnFailure             = x => { };
            TypeToValidate        = typeToValidate;
            this.cascadeModeThunk = cascadeModeThunk;

            PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member);
        }
コード例 #3
0
        /// <summary>
        /// Creates a new property rule.
        /// </summary>
        /// <param name="member">Property</param>
        /// <param name="propertyFunc">Function to get the property value</param>
        /// <param name="expression">Lambda expression used to create the rule</param>
        /// <param name="cascadeModeThunk">Function to get the cascade mode.</param>
        /// <param name="typeToValidate">Type to validate</param>
        /// <param name="containerType">Container type that owns the property</param>
        public PropertyRule(MemberInfo member, Func <object, object> propertyFunc, LambdaExpression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType)
        {
            Member                = member;
            PropertyFunc          = propertyFunc;
            Expression            = expression;
            OnFailure             = x => { };
            TypeToValidate        = typeToValidate;
            this.cascadeModeThunk = cascadeModeThunk;

            PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member, expression);
            DisplayName  = new LazyStringSource(() => ValidatorOptions.DisplayNameResolver(containerType, member, expression));
        }
コード例 #4
0
ファイル: PropertyRule.cs プロジェクト: yuessir/pure.data
        /// <summary>
        /// Creates a new property rule.
        /// </summary>
        /// <param name="member">Property</param>
        /// <param name="propertyFunc">Function to get the property value</param>
        /// <param name="expression">Lambda expression used to create the rule</param>
        /// <param name="cascadeModeThunk">Function to get the cascade mode.</param>
        /// <param name="typeToValidate">Type to validate</param>
        /// <param name="containerType">Container type that owns the property</param>
        public PropertyRule(MemberInfo member, Func <object, object> propertyFunc, LambdaExpression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType, Func <PropertyRule, string> _LoadDisplayName)
        {
            Member       = member;
            PropertyFunc = propertyFunc;
            //	Expression = expression;
            OnFailure             = x => { };
            TypeToValidate        = typeToValidate;
            this.cascadeModeThunk = cascadeModeThunk;

            DependentRules  = new List <IValidationRule>();
            PropertyName    = ValidatorOptions.PropertyNameResolver(containerType, member, expression);
            LoadDisplayName = _LoadDisplayName;
        }
コード例 #5
0
        private string GetPropertyName(IEnumerable <MemberInfo> properties)
        {
            var propertiesList = properties.Where(x => x != null).Select(x => x.Name).ToList();

            if (MemberAccessor != null)
            {
                string memberName = ValidatorOptions.PropertyNameResolver(typeof(T), MemberAccessor.Member, MemberAccessor);

                if (!string.IsNullOrEmpty(memberName))
                {
                    propertiesList.Insert(0, memberName);
                }
            }

            return(string.Join(".", propertiesList));
        }
コード例 #6
0
        /// <summary>
        /// Creates a new property rule.
        /// </summary>
        /// <param name="member">Property</param>
        /// <param name="propertyFunc">Function to get the property value</param>
        /// <param name="expression">Lambda expression used to create the rule</param>
        /// <param name="cascadeModeThunk">Function to get the cascade mode.</param>
        /// <param name="typeToValidate">Type to validate</param>
        /// <param name="containerType">Container type that owns the property</param>
        public PropertyRule(MemberInfo member, Func <object, object> propertyFunc, LambdaExpression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType)
        {
            Member                = member;
            PropertyFunc          = propertyFunc;
            Expression            = expression;
            OnFailure             = x => { };
            TypeToValidate        = typeToValidate;
            this.cascadeModeThunk = cascadeModeThunk;

            PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member, expression);
            string displayName = ValidatorOptions.DisplayNameResolver(containerType, member, expression);

            if (!string.IsNullOrEmpty(displayName))
            {
                DisplayName = new StaticStringSource(displayName);
            }
        }
コード例 #7
0
        private IEnumerable <string> GetMemberNames()
        {
            if (_testValidationResult.MemberAccessor == null)
            {
                yield break;
            }

            string memberName = ValidatorOptions.PropertyNameResolver(
                typeof(T),
                _testValidationResult.MemberAccessor.Member,
                _testValidationResult.MemberAccessor
                );

            if (!string.IsNullOrEmpty(memberName))
            {
                yield return(memberName);
            }
        }
コード例 #8
0
        public void ShouldNotHaveValidationErrorFor <TProperty>(Expression <Func <T, TProperty> > memberAccessor)
        {
            string propertyName = ValidatorOptions.PropertyNameResolver(typeof(T), memberAccessor.GetMember(), memberAccessor);

            ValidationTestExtension.ShouldNotHaveValidationError(Errors, propertyName, true);
        }
コード例 #9
0
        public IEnumerable <ValidationFailure> ShouldHaveValidationErrorFor <TProperty>(Expression <Func <T, TProperty> > memberAccessor)
        {
            string propertyName = ValidatorOptions.PropertyNameResolver(typeof(T), memberAccessor.GetMember(), memberAccessor);

            return(ValidationTestExtension.ShouldHaveValidationError(Errors, propertyName, true));
        }