Udostępnij za pośrednictwem


MessageEncoderFactory Klasa

Definicja

Abstrakcyjna klasa bazowa reprezentująca fabrykę do tworzenia koderów komunikatów, które mogą odczytywać komunikaty ze strumienia i zapisywać je w strumieniu dla różnych typów kodowania komunikatów.

public ref class MessageEncoderFactory abstract
public abstract class MessageEncoderFactory
type MessageEncoderFactory = class
Public MustInherit Class MessageEncoderFactory
Dziedziczenie
MessageEncoderFactory

Przykłady

Poniższy kod pokazuje, jak napisać klasę pochodzącą z klasy MessageEncoderFactory:

public override bool IsContentTypeSupported(string contentType)
{
    if (base.IsContentTypeSupported(contentType))
    {
        return true;
    }
    if (contentType.Length == this.MediaType.Length)
    {
        return contentType.Equals(this.MediaType, StringComparison.OrdinalIgnoreCase);
    }
    else
    {
        if (contentType.StartsWith(this.MediaType, StringComparison.OrdinalIgnoreCase)
            && (contentType[this.MediaType.Length] == ';'))
        {
            return true;
        }
    }
    return false;
}
public class CustomTextMessageEncoderFactory : MessageEncoderFactory
{
    private MessageEncoder encoder;
    private MessageVersion version;
    private string mediaType;
    private string charSet;

    internal CustomTextMessageEncoderFactory(string mediaType, string charSet,
        MessageVersion version)
    {
        this.version = version;
        this.mediaType = mediaType;
        this.charSet = charSet;
        this.encoder = new CustomTextMessageEncoder(this);
    }

    public override MessageEncoder Encoder
    {
        get
        {
            return this.encoder;
        }
    }

    public override MessageVersion MessageVersion
    {
        get
        {
            return this.version;
        }
    }

    internal string MediaType
    {
        get
        {
            return this.mediaType;
        }
    }

    internal string CharSet
    {
        get
        {
            return this.charSet;
        }
    }
}

Uwagi

Kodowanie to proces przekształcania komunikatu w sekwencję bajtów. Dekodowanie jest procesem odwrotnym.

Użyj tej klasy, jeśli chcesz zaimplementować niestandardowy koder komunikatów. Aby zaimplementować własny niestandardowy koder komunikatów, należy podać niestandardowe implementacje następujących trzech abstrakcyjnych klas bazowych:

Zastąpij element , Encoder aby zwrócić wystąpienie niestandardowego MessageEncoderelementu . Następnie podłączanie MessageEncoderFactory niestandardowego stosu elementu powiązania używanego do konfigurowania usługi lub klienta przez zastąpienie CreateMessageEncoderFactory metody w celu zwrócenia wystąpienia tej fabryki. Aby uzyskać więcej informacji na temat koderów niestandardowych, zobacz Transfer danych i Serializacja.

Konstruktory

MessageEncoderFactory()

Inicjuje nowe wystąpienie klasy MessageEncoderFactory.

Właściwości

Encoder

Po zastąpieniu w klasie pochodnej pobiera koder komunikatów, który jest generowany przez fabrykę.

MessageVersion

Po zastąpieniu w klasie pochodnej pobiera wersję komunikatów używaną przez kodery produkowane przez fabrykę do kodowania komunikatów.

Metody

CreateSessionEncoder()

Zwraca koder komunikatów, który może służyć do korelowania komunikatów w wymianach opartych na sesji.

Equals(Object)

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

(Odziedziczone po Object)
GetHashCode()

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

(Odziedziczone po Object)
GetType()

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

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
ToString()

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

(Odziedziczone po Object)

Dotyczy