public static void Main()
MyInteger i = new MyInteger(1, 4, 9);
string json = JsonConvert.SerializeObject(i);
public abstract class IMyDataType<T>
protected virtual T Data { get; set; }
public abstract String ToString(String args = null);
public abstract Boolean SetValue(T newValue);
public abstract Boolean CheckValue(T newValue);
public abstract T GetValue();
public class MyInteger : IMyDataType<int>
public int Min { get; protected set; }
public int Max { get; protected set; }
protected override int Data { get; set; }
public MyInteger(int value)
public MyInteger(int min, int value, int max)
public override Boolean SetValue(int newVal)
if (newVal >= Min && newVal <= Max)
public override Boolean CheckValue(int newVal)
return (newVal >= Min && newVal <= Max);
public override int GetValue() { return Data; }
public override String ToString(String args = null) { return Data.ToString(args); }