Comments (3)
Mind if I knock some of these issues out for Hacktoberfest?
What do you think this should do for null values? Just jumping into this project, it looks like perhaps it should still throw a validation error when the string is null (?).
I'm basing that on the implementation of IsEqualTo, which states that null != null (two null values in IsEqualTo throws a validation error).
I can also see the argument for treating null like the empty string, but If MaxLength should treat a null value as effectively having a zero length, I'd be inclined to think that IsEqualTo should also treat null as being equal to null.
from valit.
The more I look at this, the more I think Required on string should not use IsNullOrEmpty, but instead should only check null. That's consistent with the implementation of of the value type extensions + an empty string is a valid string of zero length.
The implementation of the rest of the string extensions should then also only use a null check.
To illustrate why: as it is right now, A MinLength(0) rule cannot be satisfied, and this seems like a perfectly valid validation statement. Additionally, the value type extensions seem to define Required as meaning null only (in the nullable versions).
from valit.
Sorry for beeing so late to the party guys. From now on I'm gonna be more involved in Valit again.
I must say that I agree pretty much with all your statements. Using string.IsNullOrEmpty
was wrong choice here. However I'm not quite sure what to do with this issue because changing these all string conditions to null-checks would mean quite serious change :/
@bovorasr I;ll look at your PR and decide what to do. Anyway thank you for beeing involved in this project :)
from valit.
Related Issues (20)
- Asserts in tests HOT 1
- Broken develop HOT 7
- Features for v1.0.0 HOT 18
- Add more things for customising error messages HOT 2
- Validating nested objects - passing the IValitator<TObject> HOT 4
- Integrating with ASP.NET Core HOT 5
- Integrating with Autofac HOT 3
- Refactor resolving IValitResult from rules collection
- Remove IValitRulesProvider
- Resolve rules chain inside Validate
- Support for .NetStandard HOT 4
- Return custom result type from IValitResult<T> and IValitator<T> HOT 1
- Validation for reference types seems nonfunctional HOT 1
- Dont call .Satisfies() condition when .When() returns false HOT 1
- Remove Microsoft.DotNet.Watcher.Tools from test project
- Question - Dependent Rules HOT 3
- Migrate to .NET Standard 2.1
- Migrate to .NET Core 3.1
- For(@object) throws exception when null
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from valit.