DecoderFallbackBuffer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供一个缓冲区,该缓冲区允许回退处理程序在解码器无法对输入字节序列进行解码时将替换字符串返回到该解码器。
public ref class DecoderFallbackBuffer abstract
public abstract class DecoderFallbackBuffer
type DecoderFallbackBuffer = class
Public MustInherit Class DecoderFallbackBuffer
- 继承
-
DecoderFallbackBuffer
- 派生
注解
编码定义 Unicode 字符和编码的字节序列之间的映射。 如果未为特定字节序列定义映射,则将输入字节序列转换为输出字符的解码操作将失败。
如果无法执行转换,.NET Framework会提供一种故障处理机制,称为回退。 所有解码器回退处理程序都必须实现以下各项:
解码器回退,由派生自 类的 DecoderFallback 类表示。
解码器回退缓冲区,由派生自 DecoderFallbackBuffer 类的类型表示,该类可将字符串返回到转换操作。
回退可以使用三种策略来处理转换失败:
最适合的映射。 解码器回退缓冲区可以返回表示输入字节序列的近似值的字符串。 .NET Framework不提供最适合的公共DecoderFallbackBuffer实现。
替代功能的 Server Profiler。 解码器回退缓冲区可以返回字符串,例如问号 (“?”) ,指示无法解码字节序列。 在.NET Framework中, DecoderReplacementFallback 和 DecoderReplacementFallbackBuffer 类提供公共替换回退缓冲区实现。 类的 DecoderReplacementFallback 构造函数使你能够定义替换字符串。
异常。 实现 DecoderFallbackBuffer 将引发异常,指示无法解码字节序列,并终止解码操作。 在这种情况下,回退处理程序必须提供 DecoderFallbackBuffer 实现,尽管它不会向解码器返回字符串。 在.NET Framework中DecoderExceptionFallback, 和 DecoderExceptionFallbackBuffer 类提供一个公共异常回退实现,该实现在无法解码字节序列时引发 DecoderFallbackException 。
实现中的 DecoderFallbackBuffer 缓冲区表示要返回给解码器以响应解码器回退的整个字符串。 通常,实现还包括状态信息,例如要返回到解码器的下一个字符的索引以及要返回的剩余字符数。 由于 DecoderFallbackBuffer 是抽象类,因此它要求派生类至少实现以下成员:
方法 Fallback ,解码器在无法解码字节序列时调用该方法。 解码器将两条信息传递给回退缓冲区实现:包含无法解码的字节的数组和输入字节数组中第一个字节的索引。 在解码器回退异常处理程序中,将在此方法中引发异常。 否则,如果方法提供回退,则返回
true
,否则false
返回 。方法 GetNextChar ,如果 Fallback 方法返回
true
,则解码器会重复调用该方法。 在连续调用中,处理程序应返回其缓冲区中的每个字符。 返回所有字符后,应返回 U+0000。 异常回退处理程序始终返回 U+0000。方法 MovePrevious ,该方法尝试将指针移动到缓冲区中的上一个位置,并指示移动是否成功。 异常处理程序始终返回
false
。属性 Remaining ,指示要返回到解码器的剩余字符数。 异常回退处理程序始终返回零。
构造函数
DecoderFallbackBuffer() |
初始化 DecoderFallbackBuffer 类的新实例。 |
属性
Remaining |
在派生类中重写后,此属性获取当前 DecoderFallbackBuffer 对象中要处理的剩余字符数。 |
方法
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
Fallback(Byte[], Int32) |
在派生类中被重写时,准备回退缓冲区以便对指定输入字节序列进行处理。 |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetNextChar() |
在派生类中重写后,此方法检索回退缓冲区中的下一个字符。 |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
MovePrevious() |
在派生类中重写后,此方法将使对 GetNextChar() 方法的下一次调用访问当前字符位置之前的数据缓冲区字符位置。 |
Reset() |
初始化所有与此回退缓冲区相关的数据和状态信息。 |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |