@@ -69,13 +69,17 @@ public override DynamicMetaObject BindGetMember(GetMemberBinder binder)
6969 {
7070 ConstructorInfo ctor ;
7171 Expression [ ] ctorArguments ;
72+ BindingRestrictions bindingRestrictions = BindingRestrictions . GetTypeRestriction ( Expression , LimitType ) ;
7273 if ( FunctionMapping . ContainsFunction ( binder . Name , 0 ) )
7374 {
7475 ctor = CtorWithExpressionAndString ;
7576 ctorArguments = new [ ] { Expression . Constant ( this . Value ) , Expression . Constant ( binder . Name ) } ;
7677 }
7778 else
7879 {
80+ if ( this . HasValue )
81+ bindingRestrictions = bindingRestrictions . Merge ( BindingRestrictions . GetInstanceRestriction ( Expression , Value ) ) ;
82+
7983 var reference = this . HasValue && ! string . IsNullOrEmpty ( ( this . Value as ODataExpression ) . Reference )
8084 ? string . Join ( "/" , ( this . Value as ODataExpression ) . Reference , binder . Name )
8185 : binder . Name ;
@@ -85,7 +89,7 @@ public override DynamicMetaObject BindGetMember(GetMemberBinder binder)
8589
8690 return new DynamicMetaObject (
8791 Expression . New ( ctor , ctorArguments ) ,
88- BindingRestrictions . GetTypeRestriction ( Expression , LimitType ) ) ;
92+ bindingRestrictions ) ;
8993 }
9094
9195 public override DynamicMetaObject BindSetMember ( SetMemberBinder binder , DynamicMetaObject value )
@@ -114,8 +118,10 @@ public override DynamicMetaObject BindInvokeMember(
114118 {
115119 Expression . Constant ( this . Value ) ,
116120 Expression . Constant ( new ExpressionFunction ( binder . Name , args . Select ( x => x . Value ) ) )
117- } ) ;
118- BindingRestrictions bindingRestrictions = args . Aggregate ( BindingRestrictions . Empty , ( acc , x ) => acc . Merge ( BindingRestrictions . GetInstanceRestriction ( x . Expression , x . Value ) ) ) ;
121+ } ) ;
122+ BindingRestrictions bindingRestrictions = BindingRestrictions . GetTypeRestriction ( Expression , LimitType )
123+ . Merge ( BindingRestrictions . GetInstanceRestriction ( Expression , Value ) ) ;
124+
119125 return new DynamicMetaObject (
120126 expression ,
121127 bindingRestrictions ) ;
0 commit comments