예제 #1
0
        public static ValidationsGenerator Build(this ValidationsGenerator generator, ValidationsBuilder builder)//, bool clearValidationsAndProperties = false
        {
            foreach (var item in generator.ModelInstances)
            {
                if (!builder.ModelInstances.ContainsKey(item.Key))
                {
                    builder.ModelInstances.Add(item.Key, item.Value);
                }
            }
            foreach (var item in generator.ViewModels)
            {
                if (!builder.ViewModels.Contains(item))
                {
                    builder.ViewModels.Add(item);
                }
            }
            foreach (var item in generator.ModelTypes)
            {
                if (!builder.ModelTypes.ContainsKey(item.Key))
                {
                    builder.ModelTypes.Add(item.Key, item.Value);
                }
            }
            builder.RealTimeCheck = generator.RealTimeCheck;
            foreach (var viewmodel in generator.ViewModels)
            {
                AddPropertyValidation(viewmodel, builder);
            }

            generator.ModelInstances.Clear();
            generator.ModelTypes.Clear();
            return(generator);
        }
예제 #2
0
 public static ValidationsGenerator AddTypes(this ValidationsGenerator builder, params Type[] modelTypes)
 {
     foreach (var item in modelTypes)
     {
         if (!builder.ModelTypes.TryGetValue(item, out List <PropertyValidation> validations))
         {
             builder.ModelTypes.Add(item, new List <PropertyValidation>());
         }
     }
     return(builder);
 }
예제 #3
0
 public static ValidationsGenerator AddInstances <T>(this ValidationsGenerator builder, params T[] instances)
 {
     foreach (var item in instances)
     {
         if (item == null)
         {
             throw new Exception("Your Instance is null, you cannot add validation for a null instance");
         }
         if (!builder.ModelInstances.TryGetValue(item, out List <PropertyValidation> validations))
         {
             builder.ModelInstances.Add(item, new List <PropertyValidation>());
         }
     }
     return(builder);
 }
예제 #4
0
        public static PropertyValidationsGenerator AddProperties(this ValidationsGenerator builder, params string[] propertyNames)
        {
            List <PropertyValidation> result = new List <PropertyValidation>();

            foreach (var instance in builder.ModelInstances)
            {
                foreach (var item in propertyNames)
                {
                    var property = instance.Value.FirstOrDefault(x => x.Name == item);
                    if (property == null)
                    {
                        property = new PropertyValidation()
                        {
                            Name = item
                        };
                        instance.Value.Add(property);
                    }
                    result.Add(property);
                }
            }

            foreach (var type in builder.ModelTypes)
            {
                foreach (var item in propertyNames)
                {
                    var property = type.Value.FirstOrDefault(x => x.Name == item);
                    if (property == null)
                    {
                        property = new PropertyValidation()
                        {
                            Name = item
                        };
                        type.Value.Add(property);
                    }
                    result.Add(property);
                }
            }

            return(new PropertyValidationsGenerator()
            {
                ValidationsBuilder = builder, PropertyValidation = result
            });
        }
예제 #5
0
 public static ValidationsGenerator AddViewModels(this ValidationsGenerator builder, params IValidationPropertyChanged[] viewModels)
 {
     builder.ViewModels.AddRange(viewModels);
     return(builder);
 }