using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization.Formatters;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
private readonly List<string> _values;
public Foo(IEnumerable<string> values)
_values = values.ToList();
_values = new List<string>();
public IEnumerable<string> Values { get { return _values.AsReadOnly(); } }
public static void Test()
var json = @"{""Values"":[""One"",""Two"",""Three""]}";
var deserializedFoo = JsonConvert.DeserializeObject<Foo>(json);
Assert.IsTrue(deserializedFoo.Values.Count() == 0);
Console.WriteLine( JsonConvert.SerializeObject(deserializedFoo));
public static void Main()
Console.WriteLine("Environment version: " + Environment.Version);
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);
Console.WriteLine("Failed with unhandled exception: ");