Skip to content

Commit a53ca02

Browse files
authored
Merge pull request #5 from genexuslabs/NetCoreOData_Issue85715
Fix BindingRestrictions for NetCore (BindGetMember & BindInvokeMember), Issue 85715
2 parents 9692825 + b528811 commit a53ca02

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

src/GXOdata.Client.All/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project>
22
<PropertyGroup>
3-
<AssemblyVersion>5.2.3.4</AssemblyVersion>
3+
<AssemblyVersion>5.2.3.5</AssemblyVersion>
44
<FileVersion>$(AssemblyVersion)</FileVersion>
55
<InformationalVersion>$([System.DateTime]::UtcNow.ToString("yyyyMMddHHmmss")).$(GITHUB_SHA)</InformationalVersion>
66
<Company>GeneXus</Company>

src/Simple.OData.Client.Dynamic/DynamicODataExpression.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)