ChristianProgrammer2 Ответов: 0

Как вызвать WCF operationcontract с помощью messagecontract ?


CalculateDetails1 () объявляется с параметром 'CuboidInfoRequest' типа Message Contract, который содержит DataContractObject с именем Dimension как тип CuboidDimension в качестве своего единственного свойства.

Почему вызывается CalculateDetails1 и генерируется клиентский прокси-сервер с параметризованными свойствами CuboidInfoRequest вместо самого объекта контракта сообщения. И не может ли он снова вернуть другой тип MessageContract, состоящий из другого datacontract ?




Я запустил несколько сценариев проекта, и если я передаю параметры ( элементы MessageContract как сигнатура метода определяет его штраф), но он был объявлен с объектом (MessageContract) в качестве типа параметра, а не его свойств.... откуда берутся эти параметры out и ref

Что я уже пробовал:

Созданного клиента доверенности :: общественная int RequestResponsePersonaCreate(инт ордера, MsgCtrtCLIENT.servREF.Персона PersonaObj, из MsgCtrtCLIENT.servREF.Персона PersonaObjResp) {
MsgCtrtCLIENT.servREF. MsgRequest inValue = new MsgCtrtCLIENT.servREF.MsgRequest();
инвалид.Ордера = Ид_запроса;
инвалид.PersonaObj = PersonaObj;
MsgCtrtCLIENT.servREF.MsgResponse код = ((MsgCtrtCLIENT.servREF.ImsgCtrctServ) (this)). RequestResponsePersonaCreate(inValue);
PersonaObjResp = код.PersonaObjResp;
вернуть код.Идентификатор;
}


//**************
публичный класс msgCtrctServ : ImsgCtrctServ

public MsgResponse RequestResponsePersonaCreate(MsgRequest msgReq)
{
MsgResponse msgRsp = новый MsgResponse();

msgRsp.ID = 500;
msgRsp.PersonaObjResp =
Новая персона
{
Категория = " Клецки",
Id = 88,
Имя = " Пуки",
Toys = новый список & lt;toy>(),
Title = " Тест"
};


возврат msgRsp;
}

//**************

[ServiceContract]
открытый интерфейс ImsgCtrctServ
{
[OperationContract]
MsgResponse RequestResponsePersonaCreate(MsgRequest msgReq);

[MessageContract(IsWrapped = true)]
публичный класс MsgResponse
{

частная строка responseString;
собственной персоной _persona = Новая персона();

[Свойство messageheader]
public int ID { get; set; }

public bool Success { get; set; }


[MessageBodyMember]
публичная персона PersonaObjResp
{
get { return _persona; }
set { _persona = значение; }
}

публичная строка ResponseString
{
get { return responseString; }
set { responseString = значение; }
}




//**************



[MessageContract(IsWrapped = true)]
публичный класс MsgRequest
{
[Свойство messageheader]
ордера общественная int { получить; набор; }

[MessageBodyMember]


//**************


персона публичного класса
{

public string Name { get; set; }
public int Id { get; set; }
public string Title { get; set; }
public string Category { get; set; }

0 Ответов