C# WCF中的可互操作序列化程序

C# WCF中的可互操作序列化程序,c#,wcf,datacontractserializer,messagecontract,C#,Wcf,Datacontractserializer,Messagecontract,我用一种简单的方式定义了WCF服务操作,如 [ServiceContract(Namespace = "http://contoso.com")] interface ICalculator { [OperationContract] AddResp Add(AddRqst addRequestDummyName); } 其中AddRqst定义为 [DataContract] class AddRqst { [DataMember] public decimal A {

我用一种简单的方式定义了WCF服务操作,如

[ServiceContract(Namespace = "http://contoso.com")]
interface ICalculator
{
  [OperationContract]
  AddResp Add(AddRqst addRequestDummyName);
}
其中AddRqst定义为

[DataContract]
class AddRqst
{
    [DataMember]
    public decimal A { get; set; }
    [DataMember]
    public decimal B { get; set; }
}
我看到的问题是,WCF序列化的方式和它期望请求的方式是由参数名包装的,就像这样(这是来自内存)


我的问题如下。有没有办法只使用数据合同就做到这一点?我的所有操作都有一个参数。如果不是,我修改AddRqst的方式是最好的方式吗?

我不能为此文件分发架构,因为WCF喜欢添加并希望为参数添加额外的包装器-为什么不能分发此架构?如果不是这样,应该是什么样子?@TomRedfern,我已经在帖子中澄清了。基本上,WCF期望参数名的包装器(我相信他们称之为rpc样式的格式),而我从来没有打算在消息中这样做。
<Add>
  <addRequestDummyName>
     <A>1</A>
     <B>1.5</B>
  </addRequestDummyName>
</Add>
<Add>
   <A>1</A>
   <B>1.5</B>
</Add>
[DataContract]
[MessageContract]
class AddRqst
{
    [DataMember]
    [MessageBodyMember]
    public decimal A { get; set; }
    [DataMember]
    [MessageBodyMember]
    public decimal B { get; set; }
}