diff --git a/src/libraries/System.Reflection.DispatchProxy/src/System/Reflection/DispatchProxyGenerator.cs b/src/libraries/System.Reflection.DispatchProxy/src/System/Reflection/DispatchProxyGenerator.cs index c3210feac38304..9ec6c94cd8b691 100644 --- a/src/libraries/System.Reflection.DispatchProxy/src/System/Reflection/DispatchProxyGenerator.cs +++ b/src/libraries/System.Reflection.DispatchProxy/src/System/Reflection/DispatchProxyGenerator.cs @@ -117,19 +117,9 @@ private sealed class ProxyAssembly [RequiresDynamicCode("Defining a dynamic assembly requires generating code at runtime")] public ProxyAssembly(AssemblyLoadContext alc) { - string name; - if (alc == AssemblyLoadContext.Default) - { - name = "ProxyBuilder"; - } - else - { - string? alcName = alc.Name; - name = string.IsNullOrEmpty(alcName) ? $"DispatchProxyTypes.{alc.GetHashCode()}" : $"DispatchProxyTypes.{alcName}"; - } AssemblyBuilderAccess builderAccess = alc.IsCollectible ? AssemblyBuilderAccess.RunAndCollect : AssemblyBuilderAccess.Run; - _ab = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(name), builderAccess); + _ab = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("ProxyBuilder"), builderAccess); _mb = _ab.DefineDynamicModule("testmod"); } diff --git a/src/libraries/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs b/src/libraries/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs index 3be55f8c0912cf..59c28e9600a8a6 100644 --- a/src/libraries/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs +++ b/src/libraries/System.Reflection.DispatchProxy/tests/DispatchProxyTests.cs @@ -681,5 +681,24 @@ static object CreateTestDispatchProxy(Type type) => .MakeGenericMethod(typeof(IDisposable), type) .Invoke(null, null); } + + [Fact] + public static void Test_Multiple_AssemblyLoadContextsWithBadName() + { + if (typeof(DispatchProxyTests).Assembly.Location == "") + return; + + Assembly assembly = Assembly.LoadFile(typeof(DispatchProxyTests).Assembly.Location); + Type type = assembly.GetType(typeof(DispatchProxyTests).FullName); + MethodInfo method = type.GetMethod(nameof(Demo), BindingFlags.NonPublic | BindingFlags.Static); + Assert.True((bool)method.Invoke(null, null)); + } + + internal static bool Demo() + { + TestType_IHelloService proxy = DispatchProxy.Create(); + proxy.Hello("Hello"); + return true; + } } }