Десериализация вызывает копирование списков

Я хотел бы создать очень общий Model-Layer, который также можно передать как JSON. Одна модель должна иметь светодиодную панель RaspberryPi2. Поскольку я хотел бы, чтобы Класс был как можно ближе к реальности, я заставляю Список всегда иметь 8 * 8 светодиодов. Класс выглядит так:

public class VisualLedPanel
{
    private readonly Lazy<List<VisualLed>> _lazyVisualLeds = new Lazy<List<VisualLed>>(CreateVisualLeds);

    public VisualLed this[int x, int y]
    {
        get
        {
            var result = VisualLeds.FirstOrDefault(f => f.X == x && f.Y == y);
            return result;
        }
    }

    public IEnumerable<VisualLed> VisualLeds
    {
        get
        {
            return _lazyVisualLeds.Value;
        }
        set
        {
            var tt = value;
        }
    }

    private static List<VisualLed> CreateVisualLeds()
    {
        var result = new List<VisualLed>();
        for (var x = 0; x <= 7; x++)
        {
            for (var y = 0; y <= 7; y++)
            {
                result.Add(new VisualLed(x, y));
            }
        }

        return result;
    }
}

Проблема возникает с сериализацией: я использую NewtonSoft. Json.Net Serializer, и, насколько я видел, сначала получает доступ к Getter, который заставляет Logic создавать светодиоды, а затем устанавливает их впоследствии. Единственное решение, о котором я мог подумать, - это либо Custom-Deserializer, либо какой-нибудь конструктор shennenigans. Также кажется, что Deserializer не использует Set-Property для VisualLeds-Value, так как мой Debugger-Stop никогда не срабатывал.

Есть ли легкая возможность получить лучшее из обоих миров? Я хотел бы, чтобы Модель была как можно более общей, без использования Custom-Deserializer.

Ответы на вопрос(0)

Ваш ответ на вопрос