It's one of the paradoxes of blogging that most every blogger (including myself) is sharing what they know right now (let's quietly ignore those who blog purely for traffic and visibility). Since everyone is learning, this can result in poor or misleading information being shared just as much as good information. Keep this in mind as you read any blog - how experienced is the writer and how well do they really know what they're talking about.
I'm just as flawed as other bloggers, so you should feel encouraged to check my ideas for yourself. Keep the date in mind as well - in our fast moving field, even good ideas can become obsolete.
Given our requirement of supporting arbitrary metadata on our validation results, how should we modify the semantic types we’ve already created?
It’s a common requirement for validation messages to be tagged with additional metadata. We might want to indicate which data entry field is the one with a problem, or perhaps provide a tag for machine consumption that identifies which specific problem was encountered.
If we cast back our thoughts back to the start of this series, one of the limitations of using string to return each of our errors was that every message has to be an error. What do we do if we want to support another kind of message?
The PowerShell based tool psake is a great way to orchestrate a build. It can also be used for many other kinds of orchestration. One of the trickiest parts is kicking off the process in the first place.
Let’s recap what we’ve achieved so far with our semantic types for validation. We’ve created a handful of types that work together to give a good model for capturing and processing object validation. The model starts with the base class
ValidationResult and its subclasses:
|Equality in .NET||7|
|Killing the Utility Class||5|
|Instance validation in C#||10|
|Equality of validation||18 Aug 2018|
|Short-circuiting validation||11 Aug 2018|
|Aggregation of validation||04 Aug 2018|
|Recovery of validation types||28 Jul 2018|
|Basic validation||21 Jul 2018|
|Default includes and excludes for csproj||14 Jul 2018|
|Why we need better validation||07 Jul 2018|
|A question of struct performance||30 Jun 2018|
|Solving my Assembly Load Issues||23 Jun 2018|
|Troubleshooting Assembly Load Issues with the MSBuild Structured Log Viewer||16 Jun 2018|
|Troubleshooting Assembly Loading with the Assembly Binding Log Viewer||09 Jun 2018|
|Sharpen The Saw #37||04 Jun 2018|
|Converting projects to new csproj||02 Jun 2018|
|Avoid hardcoded wait times||26 May 2018|
|Sharpen The Saw #36||21 May 2018|
|Guaranteed Progression||19 May 2018|
|Always fix it twice||12 May 2018|
|Even longer than that||05 May 2018|
|Sharpen The Saw #35||30 Apr 2018|
|A simple fix takes longer than you think||28 Apr 2018|
|Sharpen The Saw #34||23 Apr 2018|
|How long is a simple fix?||21 Apr 2018|
|Sharpen The Saw #33||16 Apr 2018|
|Types behaving badly||14 Apr 2018|
|Implementing Value Equality||07 Apr 2018|
|Sharpen The Saw #32||02 Apr 2018|
|Implementing Entity Equality||31 Mar 2018|
|Sharpen The Saw #31||26 Mar 2018|
|Equality and GetHashCode||24 Mar 2018|
|Equality has Symmetry||17 Mar 2018|