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) } }
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); } }
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); } }
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)); }
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); } }
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); } }
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); } }
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)); }
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); } }
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); } }
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); } }
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); } }
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. } }
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); }
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); } }
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ı. } }
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); } }
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); } }
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); } }
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); } }
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); } }
// 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); } }
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); } }
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); } }
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); } }
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); } }
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); } }