我有以下代码将字符串转换为类型T.它适用于所有其他类型,但在T类型为DateTime时会出错. TypeConverter c = TypeDescriptor.GetConverter( typeof (T) ); return (T) c.ConvertTo( obj, typeof (T) ) 我传了一个字符串
TypeConverter c = TypeDescriptor.GetConverter( typeof (T) ); return (T) c.ConvertTo( obj, typeof (T) )
我传了一个字符串
obj = "09/09/2009"
它抛出一个错误{“’DateTimeConverter’无法将’System.String’转换为’System.DateTime’.”}
如果您知道要获取字符串,则可以使用TypeConverter.ConvertFromString.这适用于DateTimeConverter,虽然我不知道为什么ConvertTo没有.例如,这有效:
TypeConverter c = TypeDescriptor.GetConverter( typeof (DateTime) ); Console.WriteLine((DateTime) c.ConvertFromString("09/09/2009"));
或者,只需转换ConvertFrom也可以:
TypeConverter c = TypeDescriptor.GetConverter( typeof (DateTime) ); Console.WriteLine((DateTime) c.ConvertFrom("09/09/2009"));
它将转换为DateTime,因为它是那种转换器.
你应该小心文化问题.