gpt4 book ai didi

c# - PCL 中的 TypeDescriptor 替换

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:57 24 4
gpt4 key购买 nike

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 项目注入(inject) Mono TypeDescriptor 的解决方法:

PCL:

public interface IPclWorkaround
{
ConvertFromInvariantString(Type type, string s);
}

Xamarin 安卓:

[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);

关于c# - PCL 中的 TypeDescriptor 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com