示例#1
0
        public ValidationRule LoadSetupFile(string containFolder, string filename)
        {
            containFolder = containFolder ?? Path.Combine(GetContainFolder(), "Validation\\Rules");
            filename      = filename ?? $"{typeof(T).Name}ValidationRules.json";

            return(RuleService.GetSetupRules <T>(containFolder, filename));
        }
示例#2
0
        public void LoadCommonFile()
        {
            string containFolder = Path.Combine(GetContainFolder(), "Common");
            string filename      = "commonSettings.json";

            RuleService.GetCommonSettings(containFolder, filename);
        }
示例#3
0
        public ElectrixValidationBase(string containFolder, string filename)
        {
            LoadCommonFile();
            var setupRules = LoadSetupFile(containFolder, filename);

            if (setupRules.ValidationRules == null || !setupRules.ValidationRules.Any())
            {
                return;
            }

            var errorMessages = setupRules.ErrorMessages;

            foreach (var ruleFor in setupRules.ValidationRules)
            {
                var parameter        = Expression.Parameter(typeof(T));
                var memberExpression = Expression.Property(parameter, typeof(T), ruleFor.PropertyName);
                var propertyInfo     = typeof(T).GetProperty(ruleFor.PropertyName);
                var propertyType     = propertyInfo.PropertyType;
                switch (Type.GetTypeCode(propertyType))
                {
                case TypeCode.String:
                    var func        = Expression.Lambda <Func <T, string> >(memberExpression, parameter);
                    var appliedRule = RuleFor(func);
                    if (ruleFor.IsRequired)
                    {
                        appliedRule.NotNull().WithMessage(string.Format(RuleService.GetCommonSetting(CommonSettings.IsRequiredErrorMessage), ruleFor.PropertyName));
                    }
                    appliedRule.SetValidator(new StringValidator(ruleFor.Rules, errorMessages));
                    break;

                default:
                    _logger?.Error($"Custom Fluent Validation From File - Mising define Property Data Type {propertyType.Name} to build Rule");
                    break;
                }
            }
        }