public
Created

  • Download Gist
EnumerationType.cs
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
public class EnumerationType<T> : PrimitiveType where T : Enumeration<T>
{
public EnumerationType()
: base(new SqlType(DbType.Int32))
{
}
 
public override object Get(IDataReader rs, int index)
{
var o = rs[index];
var value = Convert.ToInt32(o);
return Enumeration<T>.FromInt32(value);
}
 
public override object Get(IDataReader rs, string name)
{
var ordinal = rs.GetOrdinal(name);
return Get(rs, ordinal);
}
 
public override Type ReturnedClass
{
get { return typeof(T); }
}
 
public override object FromStringValue(string xml)
{
return int.Parse(xml);
}
 
public override string Name
{
get { return "enumeration"; }
}
 
public override void Set(IDbCommand cmd, object value, int index)
{
var parameter = (IDataParameter)cmd.Parameters[index];
 
var val = (Enumeration<T>)value;
 
parameter.Value = val.Value;
}
 
public override string ObjectToSQLString(object value, Dialect dialect)
{
return value.ToString();
}
 
public override Type PrimitiveClass
{
get { return typeof(int); }
}
 
public override object DefaultValue
{
get { return 0; }
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.