Skip to content

Commit 882db8d

Browse files
committed
1 parent b4b480f commit 882db8d

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs

+19-2
Original file line numberDiff line numberDiff line change
@@ -1246,13 +1246,30 @@ private Expression CreateNewExpression(List<DynamicProperty> properties, List<Ex
12461246
ConstructorInfo ctor = type.GetConstructor(propertyTypes);
12471247
if (ctor != null && ctor.GetParameters().Length == expressions.Count)
12481248
{
1249-
return Expression.New(ctor, expressions, (IEnumerable<MemberInfo>)propertyInfos);
1249+
var expressionsPromoted = new List<Expression>();
1250+
1251+
// Loop all expressions and promote if needed
1252+
for (int i = 0; i < propertyTypes.Length; i++)
1253+
{
1254+
Type propertyType = propertyTypes[i];
1255+
Type expressionType = expressions[i].Type;
1256+
1257+
// Promote from Type to Nullable Type if needed
1258+
expressionsPromoted.Add(ExpressionPromoter.Promote(expressions[i], propertyType, true, true));
1259+
}
1260+
1261+
return Expression.New(ctor, expressionsPromoted, (IEnumerable<MemberInfo>)propertyInfos);
12501262
}
12511263

12521264
MemberBinding[] bindings = new MemberBinding[properties.Count];
12531265
for (int i = 0; i < bindings.Length; i++)
12541266
{
1255-
bindings[i] = Expression.Bind(type.GetProperty(properties[i].Name), expressions[i]);
1267+
PropertyInfo property = type.GetProperty(properties[i].Name);
1268+
Type propertyType = property.PropertyType;
1269+
Type expressionType = expressions[i].Type;
1270+
1271+
// Promote from Type to Nullable Type if needed
1272+
bindings[i] = Expression.Bind(property, ExpressionPromoter.Promote(expressions[i], propertyType, true, true));
12561273
}
12571274

12581275
return Expression.MemberInit(Expression.New(type), bindings);

src/System.Linq.Dynamic.Core/System.Linq.Dynamic.Core.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<AssemblyTitle>System.Linq.Dynamic.Core</AssemblyTitle>
55
<VersionPrefix>1.0.8.11</VersionPrefix>
66
<Authors>Microsoft;Scott Guthrie;King Wilder;Nathan Arnott;Stef Heyenrath</Authors>
7-
<TargetFrameworks>net35;net40;net45;net46;uap10.0;netstandard1.3;netstandard2.0</TargetFrameworks>
7+
<TargetFrameworks>net35;net40;net45;net46;netstandard1.3;netstandard2.0</TargetFrameworks>
88
<GenerateDocumentationFile>true</GenerateDocumentationFile>
99
<AssemblyName>System.Linq.Dynamic.Core</AssemblyName>
1010
<AssemblyOriginatorKeyFile>System.Linq.Dynamic.Core.snk</AssemblyOriginatorKeyFile>

0 commit comments

Comments
 (0)