Код: Выделить всё
public class MyItems : IReadOnlyCollection
{
private readonly List _items;
[JsonConstructor]
public MyItems(IReadOnlyCollection items)
{
_items = items != null ? new List(items) : new List();
}
[JsonIgnore]
public int Count => _items.Count;
public IEnumerator GetEnumerator()
{
return _items.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Код: Выделить всё
MyItems myItems1 = new MyItems([1, 2, 3]);
string jsonStr = System.Text.Json.JsonSerializer.Serialize(myItems1); // produces string '[1,2,3]'
MyItems? myItems2 = System.Text.Json.JsonSerializer.Deserialize(jsonStr); // throws
System.NotSupportedException: 'Тип коллекции «MyItems» является абстрактным, это интерфейс , или доступен только для чтения и не может быть создан и заполнен. Путь: $ | НомерЛинии: 0 | BytePositionInLine: 1.'
Я ожидаю, что будет использоваться ctor, отмеченный [JsonConstructor], но, возможно, проблема заключается в имени аргумент..?
Использование специального JsonConverter — единственный выход?
Ой… чуть не забыл — использование net9
Спасибо. заранее
Подробнее здесь: https://stackoverflow.com/questions/793 ... collection
Мобильная версия