Десериализация Newtonsoft JSON не работает при использовании ConfuserEx - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть такой класс JSON:

public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

Но значения UpdatesAvailable и LinkOfNewVersion равны нулю, когда я путаю свою сборку с помощью ConfuserEx: /

Я пробовал все следующее:

Добавление атрибута [Obfuscation(Exclude = false, Feature = "-rename")] над моим классом JSON:

[Obfuscation(Exclude = false, Feature = "-rename")]
public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

Добавление атрибута [Serializable] над моим классом JSON:

[Serializable]
public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

Добавление обоих атрибутов над моим классом JSON:

[Serializable]
[Obfuscation(Exclude = false, Feature = "-rename")]
public class UpdateCheck
{
    public bool UpdatesAvailable { get; set; }
    public string LinkOfNewVersion { get; set; }
}

Но все, что я пробовал, не удалось: /

Мои запутанные свойства:

  <rule pattern="true" preset="maximum" inherit="false">
    <protection id="anti ildasm" />
    <protection id="anti tamper" />
    <protection id="constants" />
    <protection id="ctrl flow" />
    <protection id="anti dump" />
    <protection id="anti debug" />
    <protection id="invalid metadata" />
    <protection id="ref proxy" />
    <protection id="resources" />
    <protection id="typescramble" />
    <protection id="rename" />
  </rule>

И когда я удаляю защиту «переименовать» из моего конфигурационного файла ConfuserEx, моя сборка падает так: Снимок экрана

Буду признателен за любую помощь.

Спасибо!

1 Ответ

0 голосов
/ 13 сентября 2018

Попробуйте использовать JsonProperty атрибуты, чтобы установить имена полей в их фиксированные значения:

public class UpdateCheck
{
    [JsonProperty("UpdatesAvailable")]
    public bool UpdatesAvailable { get; set; }

    [JsonProperty("LinkOfNewVersion")]
    public string LinkOfNewVersion { get; set; }
}
...