TypeDescriptor.GetConverter(Type)
是a very convientent way,用于将许多内置数据类型与字符串串行化/反序列化:
object original = ...;
string serialized = TypeDescriptor.GetConverter(t).ConvertToInvariantString(original);
object deserialized = TypeDescriptor.GetConverter(t).ConvertFromInvariantString(serialized);
不幸的是,
TypeDescriptor
在可移植类库中不可用。是否有规范的替代方法,还是我们必须返回大量的switch语句?
最佳答案
TypeDescriptor
在PCL中不可用,但在使用PCL的实际客户端上可能可用。
这是我用来从Xamarin Android项目注入Mono TypeDescriptor的解决方法:
PCL:
public interface IPclWorkaround
{
ConvertFromInvariantString(Type type, string s);
}
Xamarin Android:
[assembly: Dependency(typeof(PclWorkaround))]
class PclWorkaround : IPclWorkaround
{
public object ConvertFromInvariantString(Type type, string s)
{
return TypeDescriptor.GetConverter(type).ConvertFromInvariantString(s);
}
}
在PCL中的用法:
var myObject = DependencyService.Get<IPclWorkaround>.ConvertFromInvariantString(type, myString);