DecoderFallbackBuffer Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет буфер, позволяющий резервному обработчику возвращать в декодер альтернативную строку, если он не может декодировать входную последовательность байтов.
public ref class DecoderFallbackBuffer abstract
public abstract class DecoderFallbackBuffer
type DecoderFallbackBuffer = class
Public MustInherit Class DecoderFallbackBuffer
- Наследование
-
DecoderFallbackBuffer
- Производный
Комментарии
Кодировка определяет сопоставление между символом Юникода и закодированной последовательностью байтов. Операция декодирования, которая преобразует входную последовательность байтов в выходной символ, завершается ошибкой, если для определенной последовательности байтов не определено сопоставление.
Платформа .NET Framework предоставляет механизм обработки сбоев, называемый резервным вариантом, если преобразование не может быть выполнено. Все резервные обработчики декодеров должны реализовывать следующее:
Резервный декодер, который представлен классом, производным от DecoderFallback класса .
Резервный буфер декодера, представленный типом, производным от DecoderFallbackBuffer класса , который может возвращать строку в операцию преобразования.
Резервные варианты могут использовать три стратегии для обработки сбоев преобразования:
Наилучшее сопоставление. Резервный буфер декодера может возвращать строку, представляющую приближение к входной последовательности байтов. Платформа .NET Framework не предоставляет общедоступную реализацию.DecoderFallbackBuffer
Замена. Резервный буфер декодера может возвращать строку, например вопросительный знак ("?"), которая указывает, что последовательность байтов не может быть декодирована. В платформа .NET Framework классы DecoderReplacementFallback и DecoderReplacementFallbackBuffer предоставляют общедоступную реализацию резервного буфера замены. Конструктор DecoderReplacementFallback класса позволяет определить строку замены.
Исключение. Реализация DecoderFallbackBuffer создает исключение, указывающее, что последовательность байтов не может быть декодирована, и завершает операцию декодирования. В этом случае резервный обработчик должен предоставлять реализацию DecoderFallbackBuffer , хотя он не возвращает строку декодеру. В платформа .NET Framework классы и DecoderExceptionFallbackBuffer предоставляют общедоступную реализацию резервного исключения, DecoderExceptionFallback которая создает исключение , если последовательность байтов 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) |