【发布时间】:2018-12-12 05:51:32
【问题描述】:
TLDR 问题:
如何将字符串转换为特定类型的对象?
长问题
我想制作一个 PlayerPrefs 包装器,我可以在其中存储我想要的任何数据。
原来是这样的
void Set<T>(string Key, T Value)
{
PlayerPrefs.SetString(Key, Value.ToString());
}
T Get<T>(string Key)// where T : IParseable
{
//Code that checks for errors and throws exceptions
return T.Parse(PlayerPrefs.GetString(Key));
}
这里的问题是它“依赖”数据是可解析的(或实现我发明 XD 的 IParseable)并且原始数据类型没有实现它,即使它们都有 Parse 方法
是否已有可以使用的
IParseable接口?如果不是,有没有办法知道T类型是否是原始数据类型?
有没有更好的方法来实现我想做的事情?
如果我为此使用 JSON 会更好吗?
【问题讨论】:
-
2) -
typeof(IConvertible).IsAssignableFrom(typeof(T))4) - 是的,序列化/反序列化而不是.ToString()/Parse() -
不要重新发明轮子你自己的“IParsable”。您要寻找的是序列化/反序列化。不过,不确定 Unity3D 带有什么(反)序列化器。您应该做的是使用(您选择的)序列化程序将数据(对象)序列化为某种文本表示形式。与您选择的序列化程序关联的相应反序列化程序可用于将该文本表示反序列化回对象。我喜欢/想要 Json,考虑使用 Json.NET(再次,不确定它是否可用于 Unity3D/Mono)