Dlaczego serializacja Json.NET kończy się niepowodzeniem z [Serializable] i lambda wewnątrz właściwości tylko do odczytu?

Wedługte informacje o wydaniu, Json.NET obsługuje teraz SerializableAttribute:

Json.NET wykrywa teraz typy, które mają SerializableAttribute i serializuje wszystkie pola tego typu, zarówno publiczne, jak i prywatne, i ignoruje właściwości.

Mam następujący przykładowy kod, który zgłasza aJsonSerializationException:

Błąd podczas pobierania wartości z „CS $ <> 9__CachedAnonymousMethodDelegate1” na „ConsoleApplication1.MyType”.

Jeśli komentuję właściwość TotalWithLambda, serializacja powiedzie się zgodnie z oczekiwaniami. W rzeczywistości otrzymuję następujące wyniki:

Pozostaw [Serializable], zostaw TotalWithLambda: zgłasza JsonSerializationExceptionZostaw [Serializable], usuń TotalWithLambda: serializuje tylko „myList”Usuń [Serializable], zostaw TotalWithLambda: serializuje „myList”, „Total” i „TotalWithLambda”Usuń [Serializable], usuń TotalWithLambda: serializuje „myList” i „Total”

Rozumiem wszystkie te przypadki z wyjątkiem pierwszego. Dlaczego połączenie [Serializable] i właściwości tylko do odczytu z lambda w nim powoduje ten wyjątek?

<code>namespace ConsoleApplication1
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Newtonsoft.Json;

    class Program
    {
        static void Main(string[] args)
        {
            var foo = new MyType();
            foo.myList = new List<int>() { 0, 1, 2, 3 };

            var returnVal = JsonConvert.SerializeObject(foo);

            Console.WriteLine("Return: " + returnVal.ToString());
            Console.ReadKey();
        }
    }

    [Serializable]
    class MyType
    {
        public IList<int> myList;
        public int Total { get { return this.myList.Sum(); } }
        public int TotalWithLambda { get { return this.myList.Sum(x => x); } }
    }

}
</code>

questionAnswers(2)

yourAnswerToTheQuestion