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) |