Exemplo n.º 1
0
        /// <summary>
        /// Get additional information about parameter for property validators
        /// </summary>
        /// <typeparam name="TObject">Type of instance</typeparam>
        /// <typeparam name="TParam">Type of parameter</typeparam>
        /// <param name="paramExpression">Expression which contain parameter</param>
        /// <returns>Property name (if parameter is property), display name source (if exists) and compiled function</returns>
        public static ParameterInfo <TObject, TParam> GetParameterInfo <TObject, TParam>(this Expression <Func <TObject, TParam> > paramExpression)
            where TObject : IValidatableObject
        {
            var paramName = GetPropertyName(typeof(TObject), paramExpression);
            var funcValue = paramExpression.Compile();

            if (string.IsNullOrEmpty(paramName) == true)
            {
                return(new ParameterInfo <TObject, TParam>(paramName, null, funcValue));
            }

            var displayNameSource = ValidationOptions.DisplayNameResolver(typeof(TObject), null, paramExpression);

            return(new ParameterInfo <TObject, TParam>(paramName, displayNameSource, funcValue));
        }