using System.Collections.Generic;
public static void Main()
new ParameterArray<int[], int>(new int[] {1,2,3}, 5, 9);
public class ParameterArray<TEnumerable, TType>
where TEnumerable : class, ICollection<TType>
public ParameterArray(TEnumerable value, TType minValue, TType maxValue)
private TEnumerable _value;
ICollection<TType> ckeckedValue = default;
for (int idx = 0; idx < value.Count(); idx++)
ckeckedValue.Add(CheckRange(value.ElementAt(idx)));
_value = ckeckedValue as TEnumerable;
public TType CheckRange(TType value)
if (Comparer<TType>.Default.Compare(MaxValue, value) < 0)
else if (Comparer<TType>.Default.Compare(MinValue, value) > 0)
throw new ArgumentOutOfRangeException($"Value cannot be null: Range is {MinValue} to {MaxValue}");