Udostępnij za pośrednictwem


DecoderFallbackBuffer Klasa

Definicja

Udostępnia bufor, który umożliwia programowi obsługi rezerwowej zwracanie alternatywnego ciągu do dekodera, gdy nie może dekodować sekwencji bajtów wejściowych.

public ref class DecoderFallbackBuffer abstract
public abstract class DecoderFallbackBuffer
type DecoderFallbackBuffer = class
Public MustInherit Class DecoderFallbackBuffer
Dziedziczenie
DecoderFallbackBuffer
Pochodne

Uwagi

Kodowanie definiuje mapowanie między znakiem Unicode a zakodowaną sekwencją bajtów. Operacja dekodowania, która konwertuje sekwencję bajtów wejściowych na znak wyjściowy, kończy się niepowodzeniem, jeśli nie zdefiniowano mapowania dla określonej sekwencji bajtów.

.NET Framework zapewnia mechanizm obsługi błędów nazywany rezerwą, jeśli nie można wykonać konwersji. Wszystkie procedury obsługi rezerwowych dekoderów muszą zaimplementować następujące elementy:

  • Rezerwowa dekoder, która jest reprezentowana przez klasę pochodzącą DecoderFallback z klasy.

  • Bufor rezerwowy dekodera reprezentowany przez typ pochodzący z DecoderFallbackBuffer klasy, który może zwrócić ciąg do operacji konwersji.

Rezerwowe mogą używać trzech strategii do obsługi niepowodzeń konwersji:

  • Mapowanie najlepiej dopasowane. Bufor rezerwowy dekodera może zwrócić ciąg, który reprezentuje bliskie przybliżenie sekwencji bajtów wejściowych. .NET Framework nie zapewnia implementacji najlepiej dopasowanej DecoderFallbackBuffer do publicznej.

  • Wymiana. Bufor rezerwowy dekodera może zwrócić ciąg, taki jak znak zapytania ("?"), który wskazuje, że nie można zdekodować sekwencji bajtów. W .NET Framework DecoderReplacementFallback klasy i DecoderReplacementFallbackBuffer zapewniają publiczną implementację buforu rezerwowego zamiany. Konstruktor DecoderReplacementFallback klasy umożliwia zdefiniowanie ciągu zastępczego.

  • Wyjątek. Implementacja DecoderFallbackBuffer zgłasza wyjątek, który wskazuje, że sekwencja bajtów nie może zostać zdekodowana i kończy operację dekodowania. W takim przypadku program obsługi rezerwowej musi zapewnić implementację DecoderFallbackBuffer , chociaż nie zwraca ciągu do dekodera. W .NET Framework DecoderExceptionFallback klasy i DecoderExceptionFallbackBuffer zapewniają publiczną implementację rezerwową wyjątku, która zgłasza DecoderFallbackException błąd, gdy nie można zdekodować sekwencji bajtów.

Bufor w DecoderFallbackBuffer implementacji reprezentuje cały ciąg, który ma zostać zwrócony do dekodera w odpowiedzi na rezerwowy dekoder. Ogólnie rzecz biorąc implementacje zawierają również informacje o stanie, takie jak indeks następnego znaku, aby powrócić do dekodera i liczbę pozostałych znaków do zwrócenia. Ponieważ DecoderFallbackBuffer jest to klasa abstrakcyjna, wymaga klas pochodnych, aby zaimplementować następujące elementy członkowskie co najmniej:

  • Metoda Fallback , która jest wywoływana przez dekoder, gdy nie może dekodować sekwencji bajtów. Dekoder przekazuje dwie informacje do implementacji buforu rezerwowego: tablicy zawierającej bajty, których nie można zdekodować, oraz indeks pierwszego bajtu w tablicy bajtów wejściowych. W procedurze obsługi wyjątków rezerwowych dekodera wyjątek jest zgłaszany w tej metodzie. W przeciwnym razie metoda zwraca wartość true , jeśli zapewnia rezerwę lub false jeśli nie.

  • Metoda GetNextChar , która jest wywoływana wielokrotnie przez dekoder, jeśli Fallback metoda zwraca truewartość . W kolejnych wywołaniach program obsługi powinien zwrócić każdy znak w buforze. Gdy zwraca wszystkie znaki, powinien zwrócić wartość U+0000. Procedura obsługi rezerwowej wyjątku zawsze zwraca wartość U+0000.

  • Metoda MovePrevious , która próbuje przenieść wskaźnik do poprzedniej pozycji w buforze i wskazuje, czy przeniesienie zakończyło się pomyślnie. Procedura obsługi wyjątków zawsze zwraca wartość false.

  • Właściwość Remaining , która wskazuje liczbę pozostałych znaków, które mają zostać zwrócone do dekodera. Procedura obsługi rezerwowej wyjątku zawsze zwraca zero.

Konstruktory

DecoderFallbackBuffer()

Inicjuje nowe wystąpienie klasy DecoderFallbackBuffer.

Właściwości

Remaining

Po zastąpieniu w klasie pochodnej pobiera liczbę znaków w bieżącym DecoderFallbackBuffer obiekcie, które pozostają do przetworzenia.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Fallback(Byte[], Int32)

Po zastąpieniu w klasie pochodnej bufor rezerwowy przygotowuje się do obsługi określonej sekwencji bajtów wejściowych.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetNextChar()

Po zastąpieniu w klasie pochodnej pobiera następny znak w buforze rezerwowym.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MovePrevious()

W przypadku przesłonięcia w klasie pochodnej powoduje następne wywołanie metody w celu uzyskania dostępu do GetNextChar() pozycji znaku buforu danych, która jest wcześniejsza niż bieżąca pozycja znaku.

Reset()

Inicjuje wszystkie dane i informacje o stanie dotyczące tego buforu rezerwowego.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też