protected override PropertyInfo GetPropertyImpl (string name, BindingFlags bindingAttr,
Binder binder, Type returnType,
Type[] types,
ParameterModifier[] modifiers)
{
bool ignoreCase = ((bindingAttr & BindingFlags.IgnoreCase) != 0);
PropertyInfo [] props = GetPropertiesByName (name, bindingAttr, ignoreCase, this);
int count = props.Length;
if (count == 0)
return null;
if (count == 1 && (types == null || types.Length == 0) &&
(returnType == null || returnType == props[0].PropertyType))
return props [0];
if (binder == null)
binder = Binder.DefaultBinder;
return binder.SelectProperty (bindingAttr, props, returnType, types, modifiers);
}