public class EnumClass<T>
{
public static T GetConvertToT(object ct, int enumValue)
{
T tValue;
switch (enumValue)
{
case 1:
tValue = Convert.ToInt16(ct);
break;
case 2:
tValue = Convert.ToInt32(ct);
break;
case 3:
tValue = System.DBNull.Value.Equals(ct) ? "" : (string)ct;
break;
case 4:
tValue = Convert.ToDateTime(ct);
break;
case 5:
tValue = Convert.ToBoolean(EnumClass<Int16>.GetConvertToT(ct, 1));
break;
}
return tValue;
}
}
{
public static T GetConvertToT(object ct, int enumValue)
{
T tValue;
switch (enumValue)
{
case 1:
tValue = Convert.ToInt16(ct);
break;
case 2:
tValue = Convert.ToInt32(ct);
break;
case 3:
tValue = System.DBNull.Value.Equals(ct) ? "" : (string)ct;
break;
case 4:
tValue = Convert.ToDateTime(ct);
break;
case 5:
tValue = Convert.ToBoolean(EnumClass<Int16>.GetConvertToT(ct, 1));
break;
}
return tValue;
}
}
{
public static T GetConvertTo(object ct, int enumValue)
{
T tValue = default(T);
if(ct != null)
{
return (T)ct;
} return tValue;
}
}
public class EnumClass<T>
{
public static T GetConvertToT(object ct, int enumValue)
{
T tValue = default(T);
switch (enumValue)
{
case 1:
tValue = (T)(Object)Convert.ToInt16(ct);
break;
case 2:
tValue = (T)(Object)Convert.ToInt32(ct);
break;
case 3:
tValue = (T)(Object)(System.DBNull.Value.Equals(ct) ? "" : (string)ct);
break;
case 4:
tValue = (T)(Object)Convert.ToDateTime(ct);
break;
case 5:
tValue = (T)(Object)Convert.ToBoolean(EnumClass<Int16>.GetConvertToT(ct, 1));
break;
}
return tValue;
}
}
{
public static T GetConvertToT(object ct, int enumValue)
{
T tValue = default(T);
switch (enumValue)
{
case 1:
tValue = (T)Convert.ToInt16(ct);
break;
case 2:
tValue = (T)Convert.ToInt32(ct);
break;
case 3:
tValue = (T)(System.DBNull.Value.Equals(ct) ? "" : (string)ct);
break;
case 4:
tValue = (T)Convert.ToDateTime(ct);
break;
case 5:
tValue = (T)Convert.ToBoolean(EnumClass<Int16>.GetConvertToT(ct, 1));
break;
}
return tValue;
}
}
enumValue是一个冗余的设计
if(cj != null && cj != DBNull.Value)
{
return (T)cj;
}
那要么SqlDataReader reader[""]后自己转换
函数返回值必须是唯一的,不可能一会返回int,一会返回string
{
public static T GetConvertTo(object ct, int enumValue)
{
T tValue = default(T);
if(ct != null)
{
tValue =(T)ct;
} return tValue;
}
}
回去详细测试了一下,是错误地,当时测试的时候有加DBNull导致输出的结果是default(T)的值,没去测DateTime。刚测试DateTime时候出异常
把你的测试代码贴出来。
(T)转换的
short val1 = EnumClass<Int16>.GetConvertTo(myObj1, 1);
int val2 = EnumClass<Int32>.GetConvertTo(myObj2, 2);
string val3 = EnumClass<String>.GetConvertTo(myObj3, 3);
DateTime val4 = EnumClass<DateTime>.GetConvertTo(myObj4, 4);
Boolean val5 = EnumClass<Boolean>.GetConvertTo(myObj5, 5);?