public object GetValue(IScriptExpressionNameResolver nameResolver)
{
object value = nameResolver.ResolveName(_parts[0]);
if (_parts.Length != 1) {
BindingFlags flags = BindingFlags.FlattenHierarchy |
BindingFlags.Public |
BindingFlags.Instance;
for (int i = 1; i < _parts.Length; i++) {
PropertyInfo pi = value.GetType().GetProperty(_parts[i], flags);
if (pi != null) {
value = pi.GetValue(value, null);
}
else {
throw new InvalidOperationException("Unknown property '" + _parts[i] + "'");
}
}
}
return value;
}