private static int ToInt32(object value)
{
if (value == null)
throw new ArgumentException();
if (value is int)
return (int)value;
if (value is string) {
string s = value.ToString();
return Int32.Parse(s, CultureInfo.InvariantCulture);
}
if (value is IConvertible)
return (value as IConvertible).ToInt32(CultureInfo.InvariantCulture);
throw new ArgumentException();
}