E
Earl Teigrob
I am using reflection to iterate the fields of a class and need to cast
these (sqldata) types to there .net primitive counterparts. The code I am
currently using for this is certainly a brute force method but it does work.
Is there a more elegant way of doing this? (See code below)
Thanks
Earl
string p;
foreach (System.Reflection.FieldInfo myFieldInfo in
DataRecord.GetType().GetFields())
{
object x = myFieldInfo.GetValue(DataRecord);
if (!SqlTypeIsNull(x))
{
p=x.GetType().ToString();
switch (p)
{
case "System.Data.SqlTypes.SqlBoolean":
r[myFieldInfo.Name]=(Boolean)(System.Data.SqlTypes.SqlBoolean)x;
break;
case "System.Data.SqlTypes.SqlByte":
r[myFieldInfo.Name]=(Byte)(System.Data.SqlTypes.SqlByte)x;
break;
case "System.Data.SqlTypes.SqlDateTime":
r[myFieldInfo.Name]=(DateTime)(System.Data.SqlTypes.SqlDateTime)x;
break;
case "System.Data.SqlTypes.SqlDecimal":
r[myFieldInfo.Name]=(Decimal)(System.Data.SqlTypes.SqlDecimal)x;
break;
case "System.Data.SqlTypes.SqlDouble":
r[myFieldInfo.Name]=(Double)(System.Data.SqlTypes.SqlDouble)x;
break;
case "System.Data.SqlTypes.SqlInt16":
r[myFieldInfo.Name]=(Int16)(System.Data.SqlTypes.SqlInt16)x;
break;
case "System.Data.SqlTypes.SqlInt32":
r[myFieldInfo.Name]=(Int32)(System.Data.SqlTypes.SqlInt32)x;
break;
case "System.Data.SqlTypes.SqlInt64":
r[myFieldInfo.Name]=(Int64)(System.Data.SqlTypes.SqlInt64)x;
break;
case "System.Data.SqlTypes.SqlSingle":
r[myFieldInfo.Name]=(Single)(System.Data.SqlTypes.SqlSingle)x;
break;
case "System.Data.SqlTypes.SqlString":
r[myFieldInfo.Name]=(String)(System.Data.SqlTypes.SqlString)x;
break;
default:
r[myFieldInfo.Name]=(String)(System.Data.SqlTypes.SqlString)x;
break;
}
}
}
these (sqldata) types to there .net primitive counterparts. The code I am
currently using for this is certainly a brute force method but it does work.
Is there a more elegant way of doing this? (See code below)
Thanks
Earl
string p;
foreach (System.Reflection.FieldInfo myFieldInfo in
DataRecord.GetType().GetFields())
{
object x = myFieldInfo.GetValue(DataRecord);
if (!SqlTypeIsNull(x))
{
p=x.GetType().ToString();
switch (p)
{
case "System.Data.SqlTypes.SqlBoolean":
r[myFieldInfo.Name]=(Boolean)(System.Data.SqlTypes.SqlBoolean)x;
break;
case "System.Data.SqlTypes.SqlByte":
r[myFieldInfo.Name]=(Byte)(System.Data.SqlTypes.SqlByte)x;
break;
case "System.Data.SqlTypes.SqlDateTime":
r[myFieldInfo.Name]=(DateTime)(System.Data.SqlTypes.SqlDateTime)x;
break;
case "System.Data.SqlTypes.SqlDecimal":
r[myFieldInfo.Name]=(Decimal)(System.Data.SqlTypes.SqlDecimal)x;
break;
case "System.Data.SqlTypes.SqlDouble":
r[myFieldInfo.Name]=(Double)(System.Data.SqlTypes.SqlDouble)x;
break;
case "System.Data.SqlTypes.SqlInt16":
r[myFieldInfo.Name]=(Int16)(System.Data.SqlTypes.SqlInt16)x;
break;
case "System.Data.SqlTypes.SqlInt32":
r[myFieldInfo.Name]=(Int32)(System.Data.SqlTypes.SqlInt32)x;
break;
case "System.Data.SqlTypes.SqlInt64":
r[myFieldInfo.Name]=(Int64)(System.Data.SqlTypes.SqlInt64)x;
break;
case "System.Data.SqlTypes.SqlSingle":
r[myFieldInfo.Name]=(Single)(System.Data.SqlTypes.SqlSingle)x;
break;
case "System.Data.SqlTypes.SqlString":
r[myFieldInfo.Name]=(String)(System.Data.SqlTypes.SqlString)x;
break;
default:
r[myFieldInfo.Name]=(String)(System.Data.SqlTypes.SqlString)x;
break;
}
}
}