internal override void MakeGetExpression(PythonBinder/*!*/ binder, Expression/*!*/ codeContext, DynamicMetaObject instance, DynamicMetaObject/*!*/ owner, ConditionalBuilder/*!*/ builder) { if (Getter.Length != 0 && !Getter[0].IsPublic) { // fallback to runtime call base.MakeGetExpression(binder, codeContext, instance, owner, builder); } else if (NeedToReturnProperty(instance, Getter)) { builder.FinishCondition(AstUtils.Constant(this)); } else if (Getter[0].ContainsGenericParameters) { builder.FinishCondition( DefaultBinder.MakeError( binder.MakeContainsGenericParametersError( MemberTracker.FromMemberInfo(_info) ), typeof(object) ).Expression ); } else if (instance != null) { builder.FinishCondition( AstUtils.Convert( binder.MakeCallExpression( new PythonOverloadResolverFactory(binder, codeContext), Getter[0], instance ).Expression, typeof(object) ) ); } else { builder.FinishCondition( AstUtils.Convert( binder.MakeCallExpression( new PythonOverloadResolverFactory(binder, codeContext), Getter[0] ).Expression, typeof(object) ) ); } }
internal override Expression/*!*/ MakeGetExpression(PythonBinder/*!*/ binder, Expression/*!*/ codeContext, Expression instance, Expression/*!*/ owner, Expression/*!*/ error) { if (Getter.Length != 0 && !Getter[0].IsPublic) { // fallback to runtime call return base.MakeGetExpression(binder, codeContext, instance, owner, error); } else if (NeedToReturnProperty(instance, Getter)) { return AstUtils.Constant(this); } else if (Getter[0].ContainsGenericParameters) { return DefaultBinder.MakeError( binder.MakeContainsGenericParametersError( MemberTracker.FromMemberInfo(_info) ) ); } Expression res; if (instance != null) { res = binder.MakeCallExpression( codeContext, Getter[0], instance ); } else { res = binder.MakeCallExpression( codeContext, Getter[0] ); } Debug.Assert(res != null); return res; }