public override object Get(Type t)
{
if (t == TableArrayType) { return this; }
if (t.IsArray)
{
var et = t.GetElementType();
var a = Array.CreateInstance(et, this.items.Count);
int cnt = 0;
foreach (var i in this.items)
{
a.SetValue(i.Get(et), cnt++);
}
return a;
}
if (!ListType.IsAssignableFrom(t))
{
throw new InvalidOperationException(string.Format("Cannot convert TOML array to '{0}'.", t.FullName));
}
var collection = (IList)Activator.CreateInstance(t);
Type itemType = ObjectType;
if (t.IsGenericType)
{
itemType = t.GetGenericArguments()[0];
}
foreach (var i in this.items)
{
collection.Add(i.Get(itemType));
}
return collection;
}