public Variant this[params string[] keys]
{
get
{
var i = 0;
var result = this[keys[i++]];
while (result != null && i< keys.Length)
{
result = result[keys[i++]];
}
return result;
}
set
{
var i = 0;
var result = this;
while (i < keys.Length - 1)
{
var key = keys[i++];
if (result[key] == null)
result[key] = Get();
result = result[key];
}
result[keys[i]] = value;
}
}
}