我有一个非常简单的函数,我写了大约一百万年后试图将字符串转换为另一种类型。适用于值类型,数字,枚举,日期时间等,因此我在解析xml文件值,Web请求结果 - 无论如何时始终使用它。
但是我的代码无法在Windows Phone 7上运行,因为未实现“TypeDescriptor”对象(请参阅下面的PC代码示例)。关于如何实现一个非常简单的字符串的任何建议 - >手机上的转换器?
这是我现有的代码(为非手机编写):
internal T ChangeType<T>(object o)
{
Type typeOfT = typeof(T);
// null
if (o == null)
{
return default(T);
}
// are types the same
if (typeOfT == o.GetType())
{
return (T)o;
}
// these are different type - try to see
// if there's a built in convertor
// NOTE: "TypeDescriptor" not implemented on Windows Phone 7
TypeConverter convertor = TypeDescriptor.GetConverter(typeOfT);
if (convertor.CanConvertFrom(o.GetType()))
{
return (T)convertor.ConvertFrom(o);
}
else
{
throw new Exception("Can not convert value to type: " + typeOfT.Name);
}
}
答案 0 :(得分:1)
How to: Implement a Type Converter上有一篇MSDN文章。
是的,与完整框架中存在的相比,这有点重新发明轮子。不幸的是,这是我们在Compact Framework中要处理的一个问题。