Validating inputs in
The control also works well when bound to a data source.
The Format event on a data binding can be used to reformat incoming data to comply with the mask, and the Parse event can be used to reformat outgoing data to comply with the specifications of the data field. If you want full programmatic control over validation, or need to perform complex validation checks, you should use the validation events built into most Windows Forms controls.
Then through aggregation, an instance of this class is wrapped inside another class which validates first the input (e.g.
check for nulls etc) and if the validation passes then it delegates to the original in a class which checks for null which then gets wrapped in a class which checks if the file exists (so we don’t overwrite existing files) which then checks for instance that the destination folder exists and so on.
You almost always end up calling functions from the validator library of validation functions.I read recently an article on DZone titled “Defensive Programming: Why You Shouldn’t Check Input Parameters for Validity” (by the way, you can find the article here: https://dzone.com/articles/defensive-programming-via-validating-decorators) and it made me think — and write this post 🙂 For those of you who don’t have the patience to read the full article, the author is talking about “layering” pretty much validation on top of business logic: you start with a class which implements the business logic — in this case, exporting a file.The implementation of it is bare-bones (for no better term) and lacks any data validation, such that given a null parameter will throw , given a wrong file will throw all sorts of other exceptions.Each one of these wrapper classes implements the That is an elegant approach and I agree with separating the checking and validation of the input from the actual code.However, the personal annoyance I have with this approach is the fact that each time a new validation is introduced you have to write a lot of boilerplate code: implement the and finally implement your method to perform the validation.
Search for validating inputs in:
@ryan_vietnow: you might want to simplify that; the function returns what is_numeric does on it's own.