public override DynamicMetaObject /*!*/ FallbackGetMember(DynamicMetaObject /*!*/ target, DynamicMetaObject errorSuggestion)
{
#if !SILVERLIGHT
DynamicMetaObject result;
if (Microsoft.Scripting.ComInterop.ComBinder.TryBindGetMember(this, target, out result))
{
return(result);
}
#endif
var metaBuilder = new MetaObjectBuilder(target);
var callArgs = new CallArguments(_context, target, DynamicMetaObject.EmptyMetaObjects, _CallInfo);
// See InvokeMember binder for explanation.
bool tryAlternateBinding = _unmangled != null && errorSuggestion == null;
if (!RubyCallAction.BuildAccess(metaBuilder, _originalName ?? Name, callArgs, errorSuggestion == null && !tryAlternateBinding, true))
{
Debug.Assert(errorSuggestion != null || tryAlternateBinding);
if (tryAlternateBinding)
{
metaBuilder.SetMetaResult(target.BindGetMember(_unmangled), true);
}
else
{
// method wasn't found so we didn't do any operation with arguments that would require restrictions converted to conditions:
metaBuilder.SetMetaResult(errorSuggestion, false);
}
}
return(metaBuilder.CreateMetaObject(this));
}