protected object InvokeStandardMember(string name, BindingFlags invokeAttr, Binder binder, object target,
object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters)
{
BindingFlags processedInvokeAttr = invokeAttr;
if ((processedInvokeAttr.HasFlag(BindingFlags.GetProperty)
|| processedInvokeAttr.HasFlag(BindingFlags.PutDispProperty))
&& !_properties.Any(p => p.Name == name)
&& _fields.Any(p => p.Name == name))
{
if (processedInvokeAttr.HasFlag(BindingFlags.GetProperty))
{
processedInvokeAttr &= ~BindingFlags.GetProperty;
processedInvokeAttr |= BindingFlags.GetField;
}
else if (processedInvokeAttr.HasFlag(BindingFlags.PutDispProperty))
{
processedInvokeAttr &= ~BindingFlags.PutDispProperty;
processedInvokeAttr |= BindingFlags.SetField;
}
}
object result = _type.InvokeMember(name, processedInvokeAttr, binder, target,
args, modifiers, culture, namedParameters);
return result;
}