private object PerformIndexDataBinding(object target, string expression,
BindingContext context, int start)
{
int end;
string indexProperty = expression.Substring(0, start).Trim();
if (!string.IsNullOrEmpty(indexProperty))
{
target = DataBinder.Eval(target, indexProperty);
}
string indexExpression = ExtractIndexerExpression(expression, start, out end);
object indexer = Evaluate(indexExpression, context);
indexExpression = string.Format("{0}{1}{2}", indexExprStartChars[0],
indexer, indexExprEndChars[0]);
target = DataBinder.Eval(target, indexExpression);
expression = expression.Substring(end + 1).TrimStart('.');
return PerformDataBinding(target, expression, context);
}