Skip to content

Commit 43268e9

Browse files
committed
Fixed #23
1 parent 610ba53 commit 43268e9

10 files changed

+594
-566
lines changed

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

+12-24
Original file line numberDiff line numberDiff line change
@@ -1617,45 +1617,33 @@ static Exception IncompatibleOperandsError(string opName, Expression left, Expre
16171617
static MemberInfo FindPropertyOrField(Type type, string memberName, bool staticAccess)
16181618
{
16191619
#if !(NETFX_CORE ||WINDOWS_APP || DOTNET5_1 || UAP10_0 || NETSTANDARD)
1620-
BindingFlags flags = BindingFlags.Public | BindingFlags.DeclaredOnly |
1621-
(staticAccess ? BindingFlags.Static : BindingFlags.Instance);
1620+
BindingFlags flags = BindingFlags.Public | BindingFlags.DeclaredOnly | (staticAccess ? BindingFlags.Static : BindingFlags.Instance);
16221621
foreach (Type t in SelfAndBaseTypes(type))
16231622
{
1624-
MemberInfo[] members = t.FindMembers(MemberTypes.Property | MemberTypes.Field,
1625-
flags, Type.FilterNameIgnoreCase, memberName);
1626-
if (members.Length != 0) return members[0];
1623+
MemberInfo[] members = t.FindMembers(MemberTypes.Property | MemberTypes.Field, flags, Type.FilterNameIgnoreCase, memberName);
1624+
if (members.Length != 0)
1625+
return members[0];
16271626
}
16281627
return null;
16291628
#else
16301629
foreach (Type t in SelfAndBaseTypes(type))
16311630
{
1631+
// Try to find a property with the specified memberName
16321632
MemberInfo member = t.GetTypeInfo().DeclaredProperties.FirstOrDefault(x => x.Name.ToLowerInvariant() == memberName.ToLowerInvariant());
1633+
if (member != null)
1634+
return member;
16331635

1634-
if (member == null)
1635-
member = t.GetTypeInfo().DeclaredFields.FirstOrDefault(x => (x.IsStatic || !staticAccess) && x.Name.ToLowerInvariant() == memberName.ToLowerInvariant());
1636+
// If no property is found, try to get a field with the specified memberName
1637+
member = t.GetTypeInfo().DeclaredFields.FirstOrDefault(x => (x.IsStatic || !staticAccess) && x.Name.ToLowerInvariant() == memberName.ToLowerInvariant());
1638+
if (member != null)
1639+
return member;
16361640

1637-
return member;
1641+
// No property or field is found, try the base type.
16381642
}
16391643
return null;
16401644
#endif
16411645
}
16421646

1643-
/*
1644-
*
1645-
BindingFlags flags = BindingFlags.Public | BindingFlags.DeclaredOnly |
1646-
(staticAccess ? BindingFlags.Static : BindingFlags.Instance);
1647-
foreach (Type t in SelfAndBaseTypes(type))
1648-
{
1649-
MemberInfo[] members = t.FindMembers(MemberTypes.Method,
1650-
flags, Type.FilterNameIgnoreCase, methodName);
1651-
int count = FindBestMethod(members.Cast<MethodBase>(), args, out method);
1652-
if (count != 0) return count;
1653-
}
1654-
method = null;
1655-
return 0;
1656-
1657-
*/
1658-
16591647
int FindMethod(Type type, string methodName, bool staticAccess, Expression[] args, out MethodBase method)
16601648
{
16611649
#if !(NETFX_CORE ||WINDOWS_APP || DOTNET5_1 || UAP10_0 || NETSTANDARD)

src/System.Linq.Dynamic.Core/project.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "1.0.3.2",
2+
"version": "1.0.3.3",
33
"title": "System.Linq.Dynamic.Core",
44
"description": "This is a .NET Core port of the the Microsoft assembly for the .Net 4.0 Dynamic language functionality.",
55
"authors": [ "Microsoft", "Scott Guthrie", "King Wilder", "Nathan Arnott", "Stef Heyenrath" ],

0 commit comments

Comments
 (0)