public ValidateRangeAttribute(object minRange, object maxRange) { if (minRange == null) { throw CmdletMetadataAttribute.tracer.NewArgumentNullException(nameof(minRange)); } if (maxRange == null) { throw CmdletMetadataAttribute.tracer.NewArgumentNullException(nameof(maxRange)); } if (!maxRange.GetType().Equals(minRange.GetType())) { bool flag = true; this.promotedType = ParserOps.figureOutOperationType((Token)null, ref minRange, out Type _, ref maxRange, out Type _); object result; if (this.promotedType != null && LanguagePrimitives.TryConvertTo(minRange, this.promotedType, out result)) { minRange = result; if (LanguagePrimitives.TryConvertTo(maxRange, this.promotedType, out result)) { maxRange = result; flag = false; } } if (flag) { throw new ValidationMetadataException("MinRangeNotTheSameTypeOfMaxRange", (Exception)null, "Metadata", "ValidateRangeMinRangeMaxRangeType", new object[2] { (object)minRange.GetType().Name, (object)maxRange.GetType().Name }); } } else { this.promotedType = minRange.GetType(); } this.minComparable = minRange as IComparable; if (this.minComparable == null) { throw new ValidationMetadataException("MinRangeNotIComparable", (Exception)null, "Metadata", "ValidateRangeNotIComparable", new object[0]); } this.maxComparable = maxRange as IComparable; if (this.minComparable.CompareTo(maxRange) > 0) { throw new ValidationMetadataException("MaxRangeSmallerThanMinRange", (Exception)null, "Metadata", "ValidateRangeMaxRangeSmallerThanMinRange", new object[0]); } this.minRange = minRange; this.maxRange = maxRange; }