From fe200fbaeb5bad3852812db1e964473e1f881d93 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Fri, 8 Jun 2012 20:23:35 -0700 Subject: [PATCH] -Fixed App Certificate by removing anon type --- Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs b/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs index e1e5fcb4..950e7336 100644 --- a/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs +++ b/Src/Newtonsoft.Json/Utilities/ReflectionUtils.cs @@ -657,24 +657,27 @@ namespace Newtonsoft.Json.Utilities // update: I think this is fixed in .NET 3.5 SP1 - leave this in for now... List distinctMembers = new List(targetMembers.Count); - var groupedMembers = targetMembers.GroupBy(m => m.Name).Select(g => new { Count = g.Count(), Members = g.Cast() }); - foreach (var groupedMember in groupedMembers) + foreach (var groupedMember in targetMembers.GroupBy(m => m.Name)) { - if (groupedMember.Count == 1) + int count = groupedMember.Count(); + IList members = groupedMember.ToList(); + + if (count == 1) { - distinctMembers.Add(groupedMember.Members.First()); + distinctMembers.Add(members.First()); } else { - var members = groupedMember.Members.Where(m => !IsOverridenGenericMember(m, bindingAttr) || m.Name == "Item"); + var resolvedMembers = members.Where(m => !IsOverridenGenericMember(m, bindingAttr) || m.Name == "Item"); - distinctMembers.AddRange(members); + distinctMembers.AddRange(resolvedMembers); } } return distinctMembers; } + private static bool IsOverridenGenericMember(MemberInfo memberInfo, BindingFlags bindingAttr) { MemberTypes memberType = memberInfo.MemberType();