Заставить класс иметь метод .Parse - PullRequest
0 голосов
/ 03 июля 2018

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

Проблема в этом заключается в том, что он «полагается» на данные, которые будут анализироваться (или реализовывать IParseable, который я изобрел XD), а примитивные типы данных не реализуют его даже при том, что все они имеют Parse Метод

  1. Есть ли уже IParseable интерфейс, который я могу использовать?

  2. Если нет, есть ли способ узнать, является ли тип T примитивным типом данных?

  3. Есть ли лучший способ добиться того, что я хочу сделать?

  4. Было бы лучше, если бы я использовал JSON для этого?

1 Ответ

0 голосов
/ 04 июля 2018

Комментарии верны, вы не должны использовать ToString () и Parse. Что вы делаете (или пытаетесь сделать) - это сериализация. Вот несколько ресурсов, на которые нужно обратить внимание, чтобы выяснить, как сериализовать и десериализовать ваши данные:

Если вы используете один из приведенных выше примеров, данные должны быть сериализованы в удобочитаемый формат. Это менее эффективно, но сериализация в строку уже менее эффективна, чем сериализация в байты. Если вам нужен такой уровень эффективности, вы не должны использовать PlayerPrefs.

...