强制 Class 具有 .Parse 方法

Forcing a Class to have a .Parse Method

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

这里的问题是 "relies" 数据可解析(或实现我发明的 XD 的 IParseable)和原始数据类型没有实现它,即使它们都有 Parse 方法

  1. 是否已经有我可以使用的 IParseable 界面?

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

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

  4. 如果我用JSON会不会更好?

评论是正确的,您不应该使用 ToString() 和 Parse。你正在做的(或试图做的)是序列化。这里有一些资源可用于确定如何序列化和反序列化您的数据:

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