[Serializable]
public class ASCIIEncoding : Encoding
{
+ // Allow for devirtualization (see https://github.com/dotnet/coreclr/pull/9230)
+ [Serializable]
+ internal sealed class ASCIIEncodingSealed : ASCIIEncoding { }
+
// Used by Encoding.ASCII for lazy initialization
// The initialization code will not be run until a static member of the class is referenced
- internal static readonly ASCIIEncoding s_default = new ASCIIEncoding();
+ internal static readonly ASCIIEncodingSealed s_default = new ASCIIEncodingSealed();
public ASCIIEncoding() : base(Encoding.CodePageASCII)
{
private const int UTF8_CODEPAGE = 65001;
+ // Allow for devirtualization (see https://github.com/dotnet/coreclr/pull/9230)
+ [Serializable]
+ internal sealed class UTF8EncodingSealed : UTF8Encoding
+ {
+ public UTF8EncodingSealed() : base(encoderShouldEmitUTF8Identifier: true) { }
+ }
+
// Used by Encoding.UTF8 for lazy initialization
// The initialization code will not be run until a static member of the class is referenced
- internal static readonly UTF8Encoding s_default = new UTF8Encoding(encoderShouldEmitUTF8Identifier: true);
+ internal static readonly UTF8EncodingSealed s_default = new UTF8EncodingSealed();
// Yes, the idea of emitting U+FEFF as a UTF-8 identifier has made it into
// the standard.