Я определил следующий интерфейс
[ServiceContract]
public interface IHealthProducts
{
[OperationContract()]
ResponseClass OrderSelfSignedHealthCertificate();
}
Который возвращает следующий тип
[MessageContract]
public class ResponseClass
{
[MessageBodyMember]
public string AnimalSpeciesCode
{
get;
set;
}
[MessageBodyMember]
public int VBN
{
get;
set;
}
}
Я ожидал, что сгенерированный клиентский код будет раскрывать метод OrderSelfSignedHealthCertificate следующим образом:
HealthProductsClient client = new HealthProductsClient();
ResponseClass response = client.OrderSelfSignedHealthCertificate();
Вместо этого свойства ResponseClass не упаковываются в ResponseClass, а отображаются следующим образом:
string OrderSelfSignedHealthCertificate(out int VBN)
Когда я обмениваю MessageContract на атрибут DataContract и MessageBodyMember на атрибут DataMember, я получаю ожидаемое поведение (тип ответа ResponseClass). Однако мне нужен MessageContract, потому что мне нужно поместить некоторые свойства в заголовок SOAP.
Я делаю что-то неправильно? Это нормальное поведение? Как получить возвращаемый тип ResponseClass при использовании MessageContract?
Любая помощь очень ценится.