The following two methods have been written incorrectly recently. default (string) is null, and null is string returns false.
Static class Extend
{
Const string def = "dd ";
Public static T GetValue <T> (this DataRow dr, string name)
{
Try
{
If (dr [name] = DBNull. Value)
{
Object o = def;
Return (T) o;
}
Else
{
Return (T) dr [name];
}
}
Catch (ArgumentException ex)
{
T t = default (T );
Object obj;
If (t is ValueType)
{
Obj = t;
}
Else if (t is string)
{
Obj = def;
}
Else
{
Obj = t;
}
Return (T) obj;
}
// If (dr [name] = DBNull. Value)
//{
// T item = default (T );
// Object obj;
// If (item is ValueType)
//{
// Obj = 0;
//}
// Else
//{
// Obj = "";
//}
// Return (T) obj;
//}
// Else
//{
// T res = (T) dr [name];
// Return res;
//}
}
}
Public static class MyExtend
{
Public static T GetValue <T> (this DataRow dr, string name)
{
Try
{
If (dr [name] = DBNull. Value)
{
Return GetDefault <T> ();
}
Else
{
Return (T) dr [name];
}
}
Catch (ArgumentException ex)
{
Return GetDefault <T> ();
}
}
Static T GetDefault <T> ()
{
T t = default (T );
Object obj;
If (t is string)
{
Obj = "";
}
Else
{
Obj = t;
}
Return (T) obj;
}
}