private static object GetDefaultValue(Type type)
{
if (type.IsEnum)
{
return Enum.ToObject(type, 0);
}
switch (Type.GetTypeCode(type))
{
case TypeCode.Empty:
case TypeCode.DBNull:
case TypeCode.String:
break;
case TypeCode.Object:
if (type.IsValueType)
{
return Activator.CreateInstance(type);
}
break;
case TypeCode.Boolean: return false;
case TypeCode.Char: return '\0';
case TypeCode.SByte: return (sbyte)0;
case TypeCode.Byte: return (byte)0;
case TypeCode.Int16: return (short)0;
case TypeCode.UInt16: return (ushort)0;
case TypeCode.Int32: return 0;
case TypeCode.UInt32: return 0U;
case TypeCode.Int64: return 0L;
case TypeCode.UInt64: return 0UL;
case TypeCode.Single: return 0F;
case TypeCode.Double: return 0D;
case TypeCode.Decimal: return 0M;
case TypeCode.DateTime: return DateTime.MinValue;
}
return null;
}