From 50ad59c5f189a47f52b383b8bf7a43ce0840ff60 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:20:03 +0000 Subject: [PATCH 1/2] Initial plan From 8dfe71d4de5ce08fceab970e4c6a78f655160d39 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:45:36 +0000 Subject: [PATCH 2/2] Document reflection member ordering as unspecified Co-authored-by: steveisok <471438+steveisok@users.noreply.github.com> --- .../System.Private.CoreLib/src/System/Type.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/libraries/System.Private.CoreLib/src/System/Type.cs b/src/libraries/System.Private.CoreLib/src/System/Type.cs index 60bf2923b2b6f0..b5aff97f9a05d9 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Type.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Type.cs @@ -210,9 +210,13 @@ public ConstructorInfo? TypeInitializer [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] public abstract EventInfo? GetEvent(string name, BindingFlags bindingAttr); + /// Gets the public events of the current . + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents)] public virtual EventInfo[] GetEvents() => GetEvents(DefaultLookup); + /// When overridden in a derived class, searches for the events of the current , using the specified binding constraints. + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicEvents | DynamicallyAccessedMemberTypes.NonPublicEvents)] public abstract EventInfo[] GetEvents(BindingFlags bindingAttr); @@ -222,9 +226,13 @@ public ConstructorInfo? TypeInitializer [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] public abstract FieldInfo? GetField(string name, BindingFlags bindingAttr); + /// Gets the public fields of the current . + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] public FieldInfo[] GetFields() => GetFields(DefaultLookup); + /// When overridden in a derived class, searches for the fields of the current , using the specified binding constraints. + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields)] public abstract FieldInfo[] GetFields(BindingFlags bindingAttr); @@ -232,6 +240,8 @@ public ConstructorInfo? TypeInitializer public virtual Type GetFunctionPointerReturnType() => throw new NotSupportedException(); public virtual Type[] GetFunctionPointerParameterTypes() => throw new NotSupportedException(); + /// Gets the public members of the current that match the specified name. + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers( DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicMethods | @@ -247,6 +257,8 @@ public ConstructorInfo? TypeInitializer [DynamicallyAccessedMembers(GetAllMembers)] public virtual MemberInfo[] GetMember(string name, MemberTypes type, BindingFlags bindingAttr) => throw new NotSupportedException(SR.NotSupported_SubclassOverride); + /// Gets the public members of the current . + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers( DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicMethods | @@ -288,6 +300,8 @@ public virtual MemberInfo GetMemberWithSameMetadataDefinitionAs(MemberInfo membe private protected static ArgumentException CreateGetMemberWithSameMetadataDefinitionAsNotFoundException(MemberInfo member) => new ArgumentException(SR.Format(SR.Arg_MemberInfoNotFound, member.Name), nameof(member)); + /// When overridden in a derived class, searches for the members of the current , using the specified binding constraints. + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(GetAllMembers)] public abstract MemberInfo[] GetMembers(BindingFlags bindingAttr); @@ -389,9 +403,13 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] protected virtual MethodInfo? GetMethodImpl(string name, int genericParameterCount, BindingFlags bindingAttr, Binder? binder, CallingConventions callConvention, Type[]? types, ParameterModifier[]? modifiers) => throw new NotSupportedException(); + /// Gets the public methods of the current . + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] public MethodInfo[] GetMethods() => GetMethods(DefaultLookup); + /// When overridden in a derived class, searches for the methods of the current , using the specified binding constraints. + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods)] public abstract MethodInfo[] GetMethods(BindingFlags bindingAttr); @@ -449,9 +467,13 @@ private protected static ArgumentException CreateGetMemberWithSameMetadataDefini [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] protected abstract PropertyInfo? GetPropertyImpl(string name, BindingFlags bindingAttr, Binder? binder, Type? returnType, Type[]? types, ParameterModifier[]? modifiers); + /// Gets the public properties of the current . + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] public PropertyInfo[] GetProperties() => GetProperties(DefaultLookup); + /// When overridden in a derived class, searches for the properties of the current , using the specified binding constraints. + /// The returned array is not guaranteed to be ordered in any particular way, such as alphabetically, by declaration order, or by inheritance hierarchy. [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] public abstract PropertyInfo[] GetProperties(BindingFlags bindingAttr);