diff --git a/src/Microsoft.AspNet.Routing/RouteValueDictionary.cs b/src/Microsoft.AspNet.Routing/RouteValueDictionary.cs index 42b53bb6f2..fc3bad7891 100644 --- a/src/Microsoft.AspNet.Routing/RouteValueDictionary.cs +++ b/src/Microsoft.AspNet.Routing/RouteValueDictionary.cs @@ -35,13 +35,16 @@ namespace Microsoft.AspNet.Routing if (obj != null) { var type = obj.GetType(); - var allProperties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); + var allProperties = type.GetRuntimeProperties(); // This is done to support 'new' properties that hide a property on a base class var orderedByDeclaringType = allProperties.OrderBy(p => p.DeclaringType == type ? 0 : 1); foreach (var property in orderedByDeclaringType) { - if (property.GetMethod != null && property.GetIndexParameters().Length == 0) + if (property.GetMethod != null && + property.GetMethod.IsPublic && + !property.GetMethod.IsStatic && + property.GetIndexParameters().Length == 0) { var value = property.GetValue(obj); if (ContainsKey(property.Name) && property.DeclaringType != type) diff --git a/src/Microsoft.AspNet.Routing/project.json b/src/Microsoft.AspNet.Routing/project.json index 1028594a5d..475a742a34 100644 --- a/src/Microsoft.AspNet.Routing/project.json +++ b/src/Microsoft.AspNet.Routing/project.json @@ -15,7 +15,7 @@ "System.Globalization": "4.0.10.0", "System.Linq": "4.0.0.0", "System.Reflection": "4.0.10.0", - "System.Reflection.Compatibility": "4.0.0.0", + "System.Reflection.Extensions": "4.0.0.0", "System.Resources.ResourceManager": "4.0.0.0", "System.Runtime": "4.0.20.0", "System.Runtime.Extensions": "4.0.10.0",