예제 #1
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);//Reflection >> Calisma aninda bir seyleri calistirabilmeyi sagliyor.
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //reflection çalışma anında bir şeyleri çalıştırabilmemiz sağlıyor..
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //ProductValidator git basetype ını bul, onun generic argümanlarından ilkini bul
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); // onun parametrelerini bul.. methodun argümanlarını gez (add in productı) eğer o entity tipinde ise

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity); // validate et (doğrulama)
            }
        }
예제 #3
0
        public override void OnBefore(IInvocation invocation)
        {
            var ourObject  = (IValidator)Activator.CreateInstance(_type);
            var entityType = _type.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(p => p.GetType() == entityType);

            foreach (var item in entities)
            {
                ValidationTool.Validate(item, ourObject);
            }
        }
예제 #4
0
        protected override void OnBefore(IInvocation invocation)                         //sen sadece onbefore'u ez demişiz burada o yüzden methodinterceptiondaki diğerleri çalışmaz
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //çalışma anında newlemek için reflection code(ProductValidator newlendi)
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //productValidatorun base ine git,generic argumanının 0. tipini yakala
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //(add,delete vs) mettodununun parametrelerini gez eğer oradaki tip yualrıdaki type a eşitse onları eşitle

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #5
0
        public IResult Update(Car car)
        {
            var validationResult = ValidationTool.Validate(new CarValidator(), car);

            if (validationResult.Errors.Count > 0)
            {
                return(new Result(false, validationResult.Errors.Select(x => x.ErrorMessage).Aggregate((a, b) => $"--{a}\n--{b}")));
            }
            _carDal.Update(car);
            return(new SuccessResult(Messages.CarUpdated));
        }
예제 #6
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //Sample : -- ProductValidator --
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //Sample : " public class ProductValidator:AbstractValidator<Product> " -- Product --
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); // " public IResult Add(Product product) " -- product --

            foreach (var entity in entities)                                             // We used foreach because for example : Add Method may have more than one Product type parameter so we must validate all parameters (type as Product)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #7
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //Reflaction (çalışma anında birşeyleri çalıştırabilmemizi sağlar yani instance oluşturur) yani New'leme yapar çalışma esnasında //ValidatorType ProductValidator
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           // oluşturulan instance nin tipini bulur //Abstract validatorun generik argumanlarından 0 ıncısının tipini yakala örn Product'un tipi
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); // oluşturulan instance ilgili methodunun parametlelerini bul //Methodun argümanlarını gez tipi Product ise onu validate et

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #8
0
        protected override void OnBefore(IInvocation invocation)                         //OnBefore'u MethodInterception' dan hatırlıyoruz.Metotdan önce Attirbutenin çalışması için.
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //Burası bir reflektor.Relection çalışma anında newleme işini yaptığımız yapı.Yani çalışma anında İnctance olusturur.
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //T Validatorun çalışma tipini buluyor.Yani BaseType'ında ki generic argümanı bul.(Örm:CarValidator'un basetype'ını bul (AbstractValidator<Car> yani) onunda generic tipini bul <Car> yani.)
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //İlgili metodun parametrelerini buluyor.Yani CarValidator yazdığın metotun içindeki car parametreleri bul örnekle açıklamak gerekirse işlevi bu.

            foreach (var entity in entities)                                             //tek tek hepsini gezip Validate ediyor.
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #9
0
        public IResult Add(Car car)
        {
            ValidationTool.Validate(new CarValidation(), car);

            if (car == null)
            {
                return(new ErrorResult(Message.ErrorMasage));
            }
            _carDal.Add(car);
            return(new SuccessResult(Message.SuccesMassage));
        }
예제 #10
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #11
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType); //Gönderdiğimiz productvalidator'u newlediğimiz yer. Yani instance oluşturuyoruz
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #12
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //validater type'ın base'ini (AbstractValidator<T>) al ve genericteki ilk entityyi al.
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //methodun parametrelerine bak

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #13
0
        protected override void OnBefore(IInvocation invocation)                         //MetodInterception'dan inheritance ettiğimiz için, MetodInterception classındaki
                                                                                         // OnBefore methodunu override ediyoruz. OnBefore=metodun önündeki kuralları çalıştır demek.
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //Reflection. ProductValidation'un bir instance'ını oluşturuyor.
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           // ProductValidator'un Base Type'ını (AbstractValidator) bul ve onun Generic argümanlarından(Product) ilkini bul.
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); // Metodun parametrelerine (Add(Product product)) bak, entityType (Product)Validator'un tipine eşit olanları bul diyor.

            foreach (var entity in entities)                                             // Bulundan entities'lerin hepsini gez ve ValidationTool'u kullanarak, validate et diyoruz.
            {
                ValidationTool.Validate(validator, entity);
            }
        }
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //product validator çalışma tipini bul
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //metodun parametrelerini bul

            //invocation method demek
            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #15
0
        protected override void OnBefore(IInvocation invocation) //Ezilecek metod bilgisi. Önce yapılmasını istediğimiz işi(Log bilgisi örneğin.) Doğrulama metodun başında yapıldığı için bunu burada yazıyoruz.
        //Başladığında yapılacak iş.
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType); //Çalışma anında instance oluşturmak istersek activator.createinstance ile yapıyoruz.
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];     //Product Validate'in basetype'ını bul 0. Argumanını product ise product ne geliyorsa. entities'e eşitle.
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity); //Validation Tool'u kullanarak doğrula.
            }
        }
예제 #16
0
        public void Add(Product product)
        {
            //ProductValidator productValidator = new ProductValidator();
            //var result = productValidator.Validate(product);
            //if (result.Errors.Count > 0)
            //{
            //    throw new ValidationException(result.Errors);
            //}
            ValidationTool.Validate(new ProductValidator(), product);
            _productDal.Add(product);

        }
예제 #17
0
        protected override void OnBefore(IInvocation invocation)
        {
            // Reflection Kodu alt satır.Yani çalışma anında İnstance oluşturmadır.
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #18
0
        protected override void OnBefore(IInvocation invocation)                         //invocation burada add, delete gibi metodları temsil ediyor.
                                                                                         //metodlardan önce validation yapacak olan kod bloğu.
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //çalışma anında çalışması = reflection Burada ProductValidator a instance oluşturur.
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //ProductValidator un önce çalıştığı base sınıfını (AbstractValidator), sonra da onun  çalışma tipini bul. (Product, customer vs.)
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //metodun parametrelerini bul. sonra da onu base sınıfın çalıştığı class adı ile karşılaştır.

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity); //validationTool burada gün yüzüne çıkıyor. validation şartlarının uygulandığı kod satırı.
            }
        }
예제 #19
0
        protected override void OnBefore(IInvocation invocation)
        {
            // reflection:çalışma anında bir şeyleri çalıştırabilmemizi sağlar
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //invocation:method demek

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #20
0
        protected override void OnBefore(IInvocation invocation)
        {
            IValidator validator  = (IValidator)Activator.CreateInstance(_validatorType);
            Type       entityType = _validatorType.BaseType?.GetGenericArguments()[0];
            // ReSharper disable once HeapView.ObjectAllocation
            var entities = invocation?.Arguments?.Where(x => x.GetType() == entityType);

            foreach (object entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #21
0
        public override void OnEntry(MethodExecutionArgs args)
        {
            //var validator = (IValidator)Activator.CreateInstance(_validationType);
            var validator  = (IValidator)ServiceTool.ServiceProvider.GetService(_validationType);
            var entityType = _validationType.BaseType.GetGenericArguments()[0];
            var entities   = args.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #22
0
        protected override void OnBefore(IInvocation invocation) //OnBEfore yeniki oncesinde isle, bu aspectdir. diger MethodInterception'de olan aspect'leride ezip islede bilersen
                                                                 //basa dusmedinse https://youtu.be/zdpPm7Q6YE0 arxaya sar
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #23
0
        protected override void OnBefore(IInvocation invocation)
        {
            //BrandValidator tipine çevir new le
            var validator  = (IValidator)Activator.CreateInstance(_validatorType); //reflection kodu ile new lendi
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];     //validator edilecek entity i bul brand
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #24
0
        // validation için onbefore boş burada ovverride ettik ve içini doldurduk bu kod çalışacak
        protected override void OnBefore(IInvocation invocation)
        {
            var validator = (IValidator)Activator.CreateInstance(_validatorType);        // reflection oluyor --> çalışma anında birşeyleri çalıştırmaya yarar
            // çalışma anında new ler
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           // product validator çalışma tipini bul (generic çalıştığı ilkini bul)
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); // bulduğun tipin parametrelerini bul invocation method demek

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #25
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //çalışma anında instance oluşturma. validatör tipi
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //argümanlarından 0. olanın tipini yakala.
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //metodun argümanlarını gez eğer ordaki tip yukarıda yakaladığım tipe eşit mi?

            // eşitse validate et.
            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #26
0
 public void Update(Customer customer)
 {
     if (_customerDal.Get(customer) != null)
     {
         ValidationTool.Validate(new CustomerValidator(), customer);
         _customerDal.Update(customer);
     }
     else
     {
         throw new Exception("The Customer You Try to Update Doesn't Exist or is Deleted!");
     }
 }
        //invocation = method demek

        //Doğrulama class olduğu için onbefore u ezdik sadece
        protected override void OnBefore(IInvocation invocation)
        {
            //çalışma anında instance oluşturmak istersek activator ile yaparız
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType);

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #28
0
        public override void OnEntry(MethodExecutionArgs args)
        {
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];
            var entities   = args.Arguments.Where(x => x.GetType() == entityType);

            //Burda eğer birden fazla parametre(Product) gelirse diye foreach ile geziyoruz.
            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #29
0
        protected override void OnBefore(IInvocation invocation)
        {
            var validator = (IValidator)Activator.CreateInstance(_validatorType);        //Reflection yapısı bu
            //Reflection çalışma anında birşeylerin çalışmasını sağlıyor
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //çalışma tipini bul
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //invocation metod demek//generik tipini bul

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }
예제 #30
0
        protected override void OnBefore(IInvocation invocation)
        {
            //
            var validator  = (IValidator)Activator.CreateInstance(_validatorType);       //reflection
            var entityType = _validatorType.BaseType.GetGenericArguments()[0];           //ilk base type ını bul daha sonra generik argümanlarında ilkini bul
            var entities   = invocation.Arguments.Where(t => t.GetType() == entityType); //metodun parametrelerine bak entity type denk gelen validator ün tipine eşit olan parametreleri git bul

            foreach (var entity in entities)
            {
                ValidationTool.Validate(validator, entity);
            }
        }