Skip to content

Instantly share code, notes, and snippets.

@jbogard
Created May 1, 2012 13:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jbogard/2567876 to your computer and use it in GitHub Desktop.
Save jbogard/2567876 to your computer and use it in GitHub Desktop.
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; }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment