Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Validacija propertisa klase posle dodeljivanja

[es] :: .NET :: Validacija propertisa klase posle dodeljivanja

[ Pregleda: 2874 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

S A J A
Beograd

Član broj: 226539
Poruke: 1904
*.dynamic.sbb.rs.



+421 Profil

icon Validacija propertisa klase posle dodeljivanja02.01.2015. u 15:43 - pre 112 meseci
Ovako...

Imam neku klasu koja ima gomilu Propertisa. Svaki ima ono Set/Get i radi se validacija prilikom upisa/izmene nečega.
Međutim, upis u bazu se ne radi kad se promeni Properti, za to sam napravio poseban Metod.

Kad se pokrene taj metod, hteo bih da izvršim ponovnu validaciju svih (ili određenih) Propertisa ali ne znam kako bih to mogao da izvedem.

Znači, validacija se radi kod dodeljivanja ili menjanja Propertiesa a posle kod upisa u bazu, jer je prošlo neko vreme, želim ponovo da uradim tu istu validaciju.

Kakva rešenja postoje za to?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Validacija propertisa klase posle dodeljivanja02.01.2015. u 22:03 - pre 112 meseci
Ako si dobro uradio stvar, ne bi trebalo da ti treba ponovna validacija. Ali, pod pretpostavkom da ti ipak treba, izmesti je van setter-a pa je pozivaj u setter-u i kad god ti je potrebna.
 
Odgovor na temu

S A J A
Beograd

Član broj: 226539
Poruke: 1904
*.dynamic.sbb.rs.



+421 Profil

icon Re: Validacija propertisa klase posle dodeljivanja02.01.2015. u 22:21 - pre 112 meseci
Da, validacija je dobra ali je treba ponoviti. Na primer imam klasu Artikal, tamo ima propertis Naziv, kad se promeni tekst onda se u bazi proverava da li dotični već postoji i ako ne postoji onda se dozvoljava promena Propertisa. Međutim, pošto dalje može da prođe izvesno vreme pre nego što korisnik klikne na "Save" i upiše podatke u bazu, logično je da još jednom uradim validaciju. Moguće je da je u međuvremenu došlo do nekih promena na bazi pa nije pametno da radim upis na osnovu bajatih validacija. Pretpostavio sam da nema načina da se zatraži ponovna validacija Propertisa, moraću da izdvajam kod, a to mi se nikako ne sviđa jer će mi klasa biti dodatno nepreglednija. Malo mi je čudno da je ovo tako loše osmišljeno.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Validacija propertisa klase posle dodeljivanja02.01.2015. u 23:18 - pre 112 meseci
Pa nije to lose osmisljeno nego ni nije osmisljeno. Ne moze sve da ti bude isplanirano :) Osmisli sam :) Imas gomilu varijanti. Mozes ti i da uradis Artikal.Name = Artikal.Name i da setujes property ponovo i izazoves validaciju. Mozes cak i da napravis metod koji ce ti pomocu refleksije proci kroz sve property-je i uraditi takav re-set. Dodatno mozes i da napravis atribut pa da prethodno pomenuti metod resetuje samo property-e koji imaju taj atribut. A mozes i validaciju (na razlicite nacine) napraviti kao sto prvo rekoh u zasebnom metodu (ili metodama) pa ih pozivati odakle god ti treba, bilo iz setter-a ili dela za snimanje.
 
Odgovor na temu

ssi

Član broj: 305920
Poruke: 333
*.static.sbb.rs.



+377 Profil

icon Re: Validacija propertisa klase posle dodeljivanja06.01.2015. u 12:12 - pre 112 meseci
Probaj ovo:

Fluent validation .net

https://fluentvalidation.codeplex.com/

Ne moras da menjas klase, validatore mozes da konfigurises ili pozoves kad god hoces.

Primer

Code:

using FluentValidation;

public class CustomerValidator: AbstractValidator<Customer> {
  public CustomerValidator() {
    RuleFor(customer => customer.Surname).NotEmpty();
    RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name");
    RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount);
    RuleFor(customer => customer.Address).Length(20, 250);
    RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
  }

  private bool BeAValidPostcode(string postcode) {
    // custom postcode validating logic goes here
  }
}

Customer customer = new Customer();
CustomerValidator validator = new CustomerValidator();
ValidationResult results = validator.Validate(customer);

bool validationSucceeded = results.IsValid;
IList<ValidationFailure> failures = results.Errors;


Klasa Customer je negde drugde...
 
Odgovor na temu

[es] :: .NET :: Validacija propertisa klase posle dodeljivanja

[ Pregleda: 2874 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.