public override void ValueFromJson(JsonReader reader, Row row, JsonSerializer serializer)
{
if (reader == null)
{
throw new ArgumentNullException("reader");
}
Int32 v;
switch (reader.TokenType)
{
case JsonToken.Null:
case JsonToken.Undefined:
_setValue(row, null);
break;
case JsonToken.Integer:
case JsonToken.Float:
case JsonToken.Boolean:
v = Convert.ToInt32(reader.Value, CultureInfo.InvariantCulture);
if (EnumType == null)
{
_setValue(row, v);
}
else
{
_setValue(row, (Int32)ConvertEnumFromInt(EnumType, v));
}
break;
case JsonToken.String:
string s = ((string)reader.Value).TrimToNull();
if (s == null)
{
_setValue(row, null);
}
else if (EnumType == null)
{
_setValue(row, Convert.ToInt32(s, CultureInfo.InvariantCulture));
}
else
{
_setValue(row, (Int32)ConvertEnumFromString(EnumType, s));
}
break;
default:
throw JsonUnexpectedToken(reader);
}
if (row.tracking)
{
row.FieldAssignedValue(this);
}
}