强制类具有.Parse方法

时间:2018-07-03 20:49:45

标签: c# unity3d .net-2.0

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方法而没有实现它< / p>

  1. 我已经可以使用IParseable界面了吗?

  2. 如果不是,是否有办法知道T类型是否是原始数据类型?

  3. 是否有更好的方法来实现我想做的事?

  4. 如果我为此使用JSON会更好吗?

1 个答案:

答案 0 :(得分:2)

注释正确,您不应该使用ToString()和Parse。您正在执行(或尝试执行)串行化。这里有一些资源供您参考,以了解如何序列化和反序列化数据:

如果使用上述示例之一,则数据应序列化为人类可读的格式。它的效率较低,但是序列化为字符串的效率已经比序列化为字节的效率低。如果您需要那种效率,就不应该使用PlayerPrefs。