avoid reflection in EncodingHelper.
authorAtsushi Eno <atsushieno@gmail.com>
Fri, 13 Feb 2015 10:25:49 +0000 (18:25 +0800)
committerAtsushi Eno <atsushieno@gmail.com>
Fri, 13 Feb 2015 10:25:49 +0000 (18:25 +0800)
as per https://github.com/mono/mono/pull/1566#discussion_r24653304

external/referencesource
mcs/class/corlib/System.Text/EncodingHelper.cs

index 803d82907af9e0336dc12c7fb9ad7c2933c24407..5661f22d9630849d04de94f6dd2e72bca484f85f 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 803d82907af9e0336dc12c7fb9ad7c2933c24407
+Subproject commit 5661f22d9630849d04de94f6dd2e72bca484f85f
index 129e6f5b0b3e5c79a0586103c36277a4856dc59a..f077e44e254a78f4f836c0b1d5f68e64d5f0bc14 100644 (file)
@@ -18,7 +18,7 @@ internal static class EncodingHelper
                                lock (lockobj){
                                        if (utf8EncodingWithoutMarkers == null){
                                                utf8EncodingWithoutMarkers = new UTF8Encoding (false, false);
-                                               typeof (Encoding).GetField ("m_isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance).SetValue (utf8EncodingWithoutMarkers, false);
+                                               utf8EncodingWithoutMarkers.setReadOnly ();
                                        }
                                }
                        }
@@ -36,9 +36,9 @@ internal static class EncodingHelper
                                lock (lockobj){
                                        if (utf8EncodingUnsafe == null){
                                                utf8EncodingUnsafe = new UTF8Encoding (false, false);
-                                               typeof (Encoding).GetField ("m_isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance).SetValue (utf8EncodingUnsafe, false);
+                                               utf8EncodingUnsafe.setReadOnly (false);
                                                utf8EncodingUnsafe.DecoderFallback = new DecoderReplacementFallback (String.Empty);
-                                               typeof (Encoding).GetField ("m_isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance).SetValue (utf8EncodingUnsafe, true);
+                                               utf8EncodingUnsafe.setReadOnly ();
                                        }
                                }
                        }
@@ -55,7 +55,7 @@ internal static class EncodingHelper
                                lock (lockobj) {
                                        if (bigEndianUTF32Encoding == null) {
                                                bigEndianUTF32Encoding = new UTF32Encoding (true, true);
-                                               typeof (Encoding).GetField ("m_isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance).SetValue (bigEndianUTF32Encoding, false);
+                                               bigEndianUTF32Encoding.setReadOnly ();
                                        }
                                }
                        }