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 object Values { get { return _values; } }
public static void Test()
var json = @"{""Values"":[""One"",""Two"",""Three""]}";
var deserializedFoo = JsonConvert.DeserializeObject<Foo>(json);
Assert.IsTrue(((IEnumerable)deserializedFoo.Values).Cast<object>().Count() == 3);
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: ");