public object this[Type type]
{
get
{
if (type == null)
{
throw new ArgumentNullException(nameof(type));
}
if (_contextStack != null)
{
int level = _contextStack.Count;
while (level > 0)
{
object value = _contextStack[--level];
if (type.IsInstanceOfType(value))
{
return value;
}
}
}
return null;
}
}