Моя служба WCF экспортирует одну операцию, помеченную действием catch-all и действием reply, чтобы она представляла общую точку входа в службу:
[ServiceContract]
public interface IService
{
[OperationContract (Action="*", ReplyAction="*")]
Message MyMethod (Message msg);
}
Клиентские прокси все еще генерируются как данные контракты.
Однако я обнаружил, что, несмотря на то, что клиент, отправляющий контракт данных, при сериализации msg
тело выглядит как эквивалентное сообщение контракт с контрактом данных, а не Сам контракт данных.
Даже это хорошо, за исключением того, что извлечение контракта данных внутри предполагает ручной анализ входящего XML. Сам сервис не имеет фактического типа MessageContract
, поэтому доступ к телу означает извлечение узлов, элементов перемаркировки и т. Д. Это ручной процесс для чего-то, что, по-видимому, WCF уже обрабатывает под прикрытием, когда открытые операции не основаны на Message
.
Как WCF делает это, когда это контракт между данными и данными? Есть ли способ, которым я могу использовать тот же процесс?