public static void Main()
var list = new AbstractValueTypeWrapper[]
new ValueTypeWrapper<Int32>(),
new ValueTypeWrapper<Double>(),
new ValueTypeWrapper<Byte>(),
foreach (var item in list)
Console.WriteLine("{0,-10}{1,-10}{2,-30}{3}", item.Name, item.Size, item.MaxValue, item.MinValue);
public class ValueTypeWrapper<T> : AbstractValueTypeWrapper
public ValueTypeWrapper()
if (type == typeof(Int32))
MaxValue = Int32.MaxValue;
MinValue = Int32.MinValue;
else if (type == typeof(Double))
MaxValue = Double.MaxValue;
MinValue = Double.MinValue;
else if (type == typeof(Byte))
MaxValue = Byte.MaxValue;
MinValue = Byte.MinValue;
public abstract class AbstractValueTypeWrapper
public string Name {get; protected set;}
public int Size { get; protected set; }
public object MaxValue { get; protected set; }
public object MinValue { get; protected set; }