我试图将复杂类型的一个参数发送到WCF操作,但是当我尝试使用它时,操作的签名变得不同并且被转换为多个简单参数类型。将单个复杂类型参数传递给wcf操作问题
如何在服务器中声明客户端的签名?
例如,我的WCF的样子:
[MessageContract]
public class Foo
{
[MessageBodyMember]
public int ID {get; set;}
[MessageBodyMember]
public DateTiem Birthdate {get; set;}
[MessageBodyMember]
public string Name {get; set;}
}
[ServiceContract]
public interface IMyService
{
[OperationContract]
string Get(Foo request);
}
public class MyService
{
public string Get(Foo request)
{
// My Code
}
}
和克林特侧面看上去就像是:
MySvc.MyServiceClient c = new MySvc.MyServiceClient();
// The following code does not work
MySvc.Foo req = new MySvc.Foo();
req.Id = 5;
req.Birthdate = DateTiem.Now;
req.Name = "John";
c.Get(req);
//I should pass the parameters like the following since the signature here be different
c.Get(5, DateTime.Now, "John");
为什么使用MessageContract和MessageBodyMember代替DataContract和DataMember? – empi
将消费服务的克林特征求了这一点。根据他的需求,他需要自己的自定义格式的SOAP消息。 – Ibrahim