summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilip Navara <filip.navara@gmail.com>2019-03-08 19:55:25 +0100
committerDan Moseley <danmose@microsoft.com>2019-03-08 10:55:25 -0800
commitd74fa42f811dbe28a8c12ae39122f8d110fbfa5c (patch)
tree394006cc61fee6865795fcabf92da995b6a68735
parentfbaff14510fb0c1844b30a3faaf9a2c8323f294b (diff)
downloadcoreclr-d74fa42f811dbe28a8c12ae39122f8d110fbfa5c.tar.gz
coreclr-d74fa42f811dbe28a8c12ae39122f8d110fbfa5c.tar.bz2
coreclr-d74fa42f811dbe28a8c12ae39122f8d110fbfa5c.zip
Allow deserialization for ResourceManager created with non-default resource set type (#23051)
-rw-r--r--src/System.Private.CoreLib/shared/System/Resources/ManifestBasedResourceGroveler.cs21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/System.Private.CoreLib/shared/System/Resources/ManifestBasedResourceGroveler.cs b/src/System.Private.CoreLib/shared/System/Resources/ManifestBasedResourceGroveler.cs
index f2ef9dda1f..485417d52a 100644
--- a/src/System.Private.CoreLib/shared/System/Resources/ManifestBasedResourceGroveler.cs
+++ b/src/System.Private.CoreLib/shared/System/Resources/ManifestBasedResourceGroveler.cs
@@ -237,10 +237,23 @@ namespace System.Resources
}
else
{
- Type readerType = Type.GetType(readerTypeName, throwOnError: true);
- object[] args = new object[1];
- args[0] = store;
- IResourceReader reader = (IResourceReader)Activator.CreateInstance(readerType, args);
+ IResourceReader reader;
+
+ // Permit deserialization as long as the default ResourceReader is used
+ if (ResourceManager.IsDefaultType(readerTypeName, ResourceManager.ResReaderTypeName))
+ {
+ reader = new ResourceReader(
+ store,
+ new Dictionary<string, ResourceLocator>(FastResourceComparer.Default),
+ permitDeserialization: true);
+ }
+ else
+ {
+ Type readerType = Type.GetType(readerTypeName, throwOnError: true);
+ object[] args = new object[1];
+ args[0] = store;
+ reader = (IResourceReader)Activator.CreateInstance(readerType, args);
+ }
object[] resourceSetArgs = new object[1];
resourceSetArgs[0] = reader;