Поделиться через


MessageEncoderFactory Класс

Определение

Абстрактный базовый класс, представляющий фабрику для создания кодировщиков сообщений, которые могут считывать сообщения из потока и записывать их в поток для различных типов кодирования сообщений.

public ref class MessageEncoderFactory abstract
public abstract class MessageEncoderFactory
type MessageEncoderFactory = class
Public MustInherit Class MessageEncoderFactory
Наследование
MessageEncoderFactory

Примеры

В следующем коде показано, как писать класс, производный от 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;
        }
    }
}

Комментарии

Кодировка — это процесс преобразования сообщения в последовательность байтов. Декодирование — это обратный процесс.

Используйте этот класс, если вы хотите реализовать пользовательский кодировщик сообщений. Чтобы реализовать собственный пользовательский кодировщик сообщений, необходимо предоставить пользовательские реализации следующих трех абстрактных базовых классов:

Переопределите Encoder, чтобы вернуть экземпляр вашего пользовательского MessageEncoder. Затем перенастроите пользовательский MessageEncoderFactory стек элементов привязки, используемый для настройки службы или клиента, переопределив CreateMessageEncoderFactory метод для возврата экземпляра этой фабрики. Дополнительные сведения о пользовательских кодировщиках см. в разделе "Передача данных и сериализация".

Конструкторы

Имя Описание
MessageEncoderFactory()

Инициализирует новый экземпляр класса MessageEncoderFactory.

Свойства

Имя Описание
Encoder

При переопределении в производном классе получает кодировщик сообщений, созданный фабрикой.

MessageVersion

При переопределении в производном классе получает версию сообщения, которая используется кодировщиками, созданными фабрикой для кодирования сообщений.

Методы

Имя Описание
CreateSessionEncoder()

Возвращает кодировщик сообщений, который можно использовать для сопоставления сообщений в обменах на основе сеансов.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к