Попытка десериализации класса с помощью Font и получение: Десериализация типов без конструктора без параметров.C#

Место общения программистов C#
Ответить
Anonymous
 Попытка десериализации класса с помощью Font и получение: Десериализация типов без конструктора без параметров.

Сообщение Anonymous »

Используя System.Text.Json, у меня есть класс с некоторыми свойствами, включая свойства System.Drawing.Font.
С сериализацией нет проблем, но я не могу его десериализовать.
Я получаю сообщение об ошибке. Десериализация типов без конструктора без параметров.
Вот упрощенный пример:
Когда я нажимаю кнопку 1, я сериализую объект, но я получаю сообщение об ошибке, когда нажимаю кнопку 2 для десериализации.

Код: Выделить всё

using System.Text.Json;
namespace WinFormsApp1;

public partial class Form1 : Form
{
private CasaSettings _casaSettings;
private string _stringJson;

public Form1()
{
InitializeComponent();
_casaSettings = new CasaSettings();
}

private void button1_Click(object sender, EventArgs e)
{
_casaSettings.DefaultFont = textBox1.Font;
_stringJson = JsonSerializer.Serialize(_casaSettings, _casaSettings.GetType());
}

private void button2_Click(object sender, EventArgs e)
{
CasaSettings convertedSetting = (CasaSettings)JsonSerializer.Deserialize(_stringJson, typeof(CasaSettings));
}
}

public class CasaSettings
{
public CasaSettings() { }

public int AlertIntervalRefresh { get; set; } = 60000;

public Font DefaultFont { get; set; } = new Font("Tahoma", (float)8.25, GraphicsUnit.Point);
}
Мне нужно продолжать использовать System.Text.Json.
Я думаю, мне нужно использовать конвертер, но не могу заставить его работать.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/787 ... es-without
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»