IronPython.Runtime.Types.ReflectedField.MakeGetExpression C# (CSharp) Method

MakeGetExpression() private method

private MakeGetExpression ( PythonBinder binder, Expression codeContext, DynamicMetaObject instance, DynamicMetaObject owner, ConditionalBuilder builder ) : void
binder IronPython.Runtime.Binding.PythonBinder
codeContext Expression
instance DynamicMetaObject
owner DynamicMetaObject
builder ConditionalBuilder
return void
        internal override void MakeGetExpression(PythonBinder/*!*/ binder, Expression/*!*/ codeContext, DynamicMetaObject instance, DynamicMetaObject/*!*/ owner, ConditionalBuilder/*!*/ builder) {
            if (!_info.IsPublic || _info.DeclaringType.ContainsGenericParameters) {
                // fallback to reflection
                base.MakeGetExpression(binder, codeContext, instance, owner, builder);
            } else if (instance == null) {
                if (_info.IsStatic) {
                    builder.FinishCondition(AstUtils.Convert(Ast.Field(null, _info), typeof(object)));
                } else {
                    builder.FinishCondition(Ast.Constant(this));
                }
            } else {
                builder.FinishCondition(
                    AstUtils.Convert(
                        Ast.Field(
                            binder.ConvertExpression(
                                instance.Expression,
                                _info.DeclaringType,
                                ConversionResultKind.ExplicitCast,
                                new PythonOverloadResolverFactory(binder, codeContext)
                            ),
                            _info
                        ),
                        typeof(object)
                    )
                );
            }
        }