diff --git a/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeTypeInfo.GetMember.cs b/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeTypeInfo.GetMember.cs index e79e6c0b7092c1..9c5741413ba55d 100644 --- a/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeTypeInfo.GetMember.cs +++ b/src/coreclr/nativeaot/System.Private.Reflection.Core/src/System/Reflection/Runtime/TypeInfos/RuntimeTypeInfo.GetMember.cs @@ -123,22 +123,7 @@ public sealed override MemberInfo GetMemberWithSameMetadataDefinitionAs(MemberIn if (member is null) throw new ArgumentNullException(nameof(member)); - // Need to walk up the inheritance chain if member is not found - // Leverage the existing cache mechanism of per type to store members - RuntimeTypeInfo? runtimeType = this; - while (runtimeType != null) - { - MemberInfo result = runtimeType.GetDeclaredMemberWithSameMetadataDefinitionAs(member); - if (result != null) - return result; - runtimeType = runtimeType.BaseType as RuntimeTypeInfo; - } - throw new ArgumentException(SR.Format(SR.Arg_MemberInfoNotFound, member.Name), nameof(member)); - } - - private MemberInfo GetDeclaredMemberWithSameMetadataDefinitionAs(MemberInfo member) - { - return member.MemberType switch + MemberInfo result = member.MemberType switch { MemberTypes.Method => QueryMemberWithSameMetadataDefinitionAs(member), MemberTypes.Constructor => QueryMemberWithSameMetadataDefinitionAs(member), @@ -148,6 +133,11 @@ private MemberInfo GetDeclaredMemberWithSameMetadataDefinitionAs(MemberInfo memb MemberTypes.NestedType => QueryMemberWithSameMetadataDefinitionAs(member), _ => null, }; + + if (result is null) + throw new ArgumentException(SR.Format(SR.Arg_MemberInfoNotFound, member.Name), nameof(member)); + + return result; } private M QueryMemberWithSameMetadataDefinitionAs(MemberInfo member) where M : MemberInfo diff --git a/src/libraries/System.Reflection/tests/TypeInfoTests.cs b/src/libraries/System.Reflection/tests/TypeInfoTests.cs index 6a94e0f4606765..fb0bccb86c4708 100644 --- a/src/libraries/System.Reflection/tests/TypeInfoTests.cs +++ b/src/libraries/System.Reflection/tests/TypeInfoTests.cs @@ -1656,6 +1656,7 @@ private static (Type, Type) CreateGeneratedTypes() } [Theory, MemberData(nameof(GetMemberWithSameMetadataDefinitionAsData))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/67533", typeof(PlatformDetection), nameof(PlatformDetection.IsNativeAot))] public void GetMemberWithSameMetadataDefinitionAs(Type openGenericType, Type closedGenericType, bool checkDeclaringType) { BindingFlags all = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly; diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index ac029b3c09174a..7e43a92ec342b0 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -377,8 +377,6 @@ - -