Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork10
If you are just starting out on a new project I recommend usinghttps://github.com/adamralph/liteguard instead of conditions. Especially if using in a mobile application, less allocations and better performance. This project is deprecated and needs a new maintainer. Contact me if you want to take over.
License
ghuntley/conditions
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Conditions is a cross platform portable class library that helps developers write pre- and postcondition validations in a fluent manner. Writing these validations is easy and it improves the readability and maintainability of code.
- .NET 4.5 (We are now a Portable Class Library)
- Mono
- Xamarin.iOS
- Xamarin.Android
- Xamarin.Mac
Installation is done via NuGet:
Install-Package Conditions
publicICollectionGetData(Nullable<int>id,stringxml,IEnumerable<int>col){// Check all preconditions:Condition.Requires(id,"id").IsNotNull()// throws ArgumentNullException on failure.IsInRange(1,999)// ArgumentOutOfRangeException on failure.IsNotEqualTo(128);// throws ArgumentException on failureCondition.Requires(xml,"xml").StartsWith("<data>")// throws ArgumentException on failure.EndsWith("</data>")// throws ArgumentException on failure.Evaluate(xml.Contains("abc")||xml.Contains("cba"));// arg exCondition.Requires(col,"col").IsNotNull()// throws ArgumentNullException on failure.IsEmpty()// throws ArgumentException on failure.Evaluate(c=>c.Contains(id.Value)||c.Contains(0));// arg ex// Do some work// Example: Call a method that should not return nullobjectresult=BuildResults(xml,col);// Check all postconditions:Condition.Ensures(result,"result").IsOfType(typeof(ICollection));// throws PostconditionException on failurereturn(ICollection)result;}publicstaticint[]Multiply(int[]left,int[]right){Condition.Requires(left,"left").IsNotNull();// You can add an optional description to each checkCondition.Requires(right,"right").IsNotNull().HasLength(left.Length,"left and right should have the same length");// Do multiplication}
A particular validation is executed immediately when it's method is called, and therefore all checks are executed in the order in which they are written:
C# 6 compiler provides easier way for accessing extension methods. Withusing static Condition;
you have no longer to prefixRequried
andEnsures
methods with name ofCondition
static class.
For example:
namespaceFoo{usingstaticCondition;publicclassBar{publicvoidBuzz(objectarg){Required(arg).IsNotNull();}}}
You can add C#6 features to your project by installingMicrosoft.Net.Compilers nuget.
- The icon "Tornado" designed byAdam Whitcroft from The Noun Project.
- With thanks toForgeDoc for providing an open source license which is used to generate the class documentation.
- S. van Deursen who is the original author of "CuttingEdge.Conditions" from which this project was forked from.
About
If you are just starting out on a new project I recommend usinghttps://github.com/adamralph/liteguard instead of conditions. Especially if using in a mobile application, less allocations and better performance. This project is deprecated and needs a new maintainer. Contact me if you want to take over.
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors3
Uh oh!
There was an error while loading.Please reload this page.