C# WCF中的可互操作序列化程序
我用一种简单的方式定义了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 {
[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; }
}