This article will show you how to combine type based validation rules with other validations, how to compose them and apply them in different scenarios, adding/removing validations when applied on concrete instances, combining objects of different types and implementing one validation strategy on all.
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace ComposableTest
{
internal static class XelementExt
{
internal static IEnumerable<T> Visit<T>(this XElement source, Func<XElement, int, T> func)
{
foreach (var v in Visit(source, func, 0))
yield return v;
}
private static IEnumerable<T> Visit<T>(XElement source, Func<XElement, int, T> func, int depth)
{
yield return func(source, depth);
foreach (XElement child in source.Elements())
foreach (T s in Visit(child, func, depth + 1))
yield return s;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.