【发布时间】:2011-06-13 18:04:01
【问题描述】:
我知道你可以重写一个对象的 ToString() 方法,这样每次你调用一个对象或将它传递给一个需要 String 类型的函数时,它都会被转换为 String。
我已经为对象类型'object'写了几个扩展方法
public static DateTime ToDate(this object date)
{
return DateTime.Parse(date.ToString());
}
public static int ToInteger(this object num)
{
return Int32.Parse(num.ToString());
}
public static long ToLong(this object num)
{
return Int64.Parse(num.ToString());
}
这样我就可以这样称呼他们:
eventObject.Cost = row["cost"].ToString();
eventObject.EventId = row["event_id"].ToLong();
但是,我想要完成的是根据我的“eventObject”上的属性类型将“object”类型的行对象转换为正确的类型。所以,我可以这样称呼它:
eventObject.Cost = row["cost"];
eventObject.EventId = row["event_id"];
如果重要的话,该行是一个 DataRow。
【问题讨论】:
-
你为什么不直接使用 Convert 类? msdn.microsoft.com/en-us/library/system.convert.aspx - 不,你不能像最后一个代码那样进行静默类型转换,除非你让“row[x]”返回一个知道如何进行隐式转换的自定义对象。
-
+1 @Lasse 使用 Convert 类比使用实用方法填充
Object更可取。 -
现在会用,觉得没啥区别
标签: c# .net casting type-conversion overriding