DynamicDictionary is a Dictionary written in C# that support multiple types, and where every value as potencial to be an IEnumerable of self. It is based on DynamicDictionary implementation from Nancy
using Dynamic;
DynamicDictionary artist = new DynamicDictionary();
artist["Name"] = "Pink Floyd";
artist["Started"] = new DateTime(1965, 12, 1);
dynamic dyn = artist;
dyn.Genres = "Rock";
string name = dyn.name;
// name = "Pink Floyd"
dyn.genres.AddRange(new []{"Psycadelic Rock", "Art Rock"});
string genre = dyn.genres;
//genre = "Rock"
List<string> genres = dyn.genres;
//genres = {"Rock", "Psycadelic Rock", "Art Rock"}
string otherGenre = dyn.genres[2];
//otherGenre = "Art Rock"
dyn.genres += "Progressive Rock";
//{"Rock", "Psycadelic Rock", "Art Rock", "Progressive Rock"}
dyn.genres -= "Art Rock";
//{"Rock", "Psycadelic Rock", "Progressive Rock"}
var jsonString = JsonConvert.SerializeObject(dyn.ToSerializableDictionary());
//and
string serializable = JsonConvert.DeserializeObject<Dictionary<string, DynamicListValueSerializable>>(jsonString);
DynamicDictionary dictionary = DynamicDictionary.FromSerializable(serializable);