/// <summary>
 /// Special constructors for sub-classes that just want to override <see cref="IsValidValue"/> instead of providing a delegate.
 /// </summary>
 /// <param name="targetDimension"></param>
 /// <exception cref="ArgumentNullException">Any of the arguments is null.</exception>
 protected OneDimensionalConstraint(QualifiedDimension <T> targetDimension)
 {
     if (targetDimension == null)
     {
         throw new ArgumentNullException("targetDimension");
     }
     _targetDimension    = targetDimension;
     _validator          = null;
     _requiredDimensions = new List <QualifiedDimension>()
     {
         _targetDimension
     }.AsReadOnly();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="OneDimensionalConstraint&lt;T&gt;"/> class.
 /// </summary>
 /// <param name="targetDimension">The target dimension.</param>
 /// <param name="validator">The validator.</param>
 /// <exception cref="ArgumentNullException">Any of the arguments is null.</exception>
 public OneDimensionalConstraint(QualifiedDimension <T> targetDimension, OneDimensionalValidator <T> validator)
 {
     if (targetDimension == null)
     {
         throw new ArgumentNullException("targetDimension");
     }
     if (validator == null)
     {
         throw new ArgumentNullException("validator");
     }
     _targetDimension    = targetDimension;
     _validator          = validator;
     _requiredDimensions = new List <QualifiedDimension>()
     {
         _targetDimension
     }.AsReadOnly();
 }