【发布时间】:2015-01-22 16:06:58
【问题描述】:
我对 TypeDescriptor 类有疑问。
我有一个包含日期的 cookie - 日期被转换为字符串,然后使用一些辅助方法再次返回。
我的主要扩展方法之一用于进行转换,但它会引发强制错误,因为日期不能从字符串转换回来。
这是我输出的消息:
22/01/2015 14:29:15 无法转换为 DateTime
在我看来像一个日期时间!
这个问题可以通过使用Convert.ToDateTime()来解决,所以一般的代码是可以的。我也将它用于其他地方的约会,迄今为止没有任何问题。
唯一的区别是我在这样的 linq 语句中间进行转换:
Set = new SortedSet<TrackedItem>(set
.Split(';')
.Select(s =>
{
var parts = s.Split(',');
return new TrackedItem(
parts[0].ConvertTo<int>(),
Convert.ToDateTime(parts[1]));
}));
有什么想法吗?
public static T ConvertTo<T>(this object obj, bool throwInvalid = false)
where T : IConvertible
{
// Object does not require converting.
if (obj is T) return (T)obj;
// Determine if object can be converted.
var type = typeof(T);
var converter = TypeDescriptor.GetConverter(type);
var isConvertible = converter != null && converter.IsValid(obj);
var error = string.Format("'{0}' could not be converted to type {1}", obj, type.Name);
// If no conversion is available, and defaults not allowed throw an error.
(!isConvertible && throwInvalid).ThrowTrue(error);
// If the object is convertible, convert it, else return the default(T).
return isConvertible ? (T)converter.ConvertFrom(obj) : default(T);
}
【问题讨论】:
标签: c# typedescriptor