如何控制通用WCF消息协定的名称

Pau*_*ner 18 .net wcf

我正在使用消息协定模型生成WCF服务.

我创建了一个通用的请求消息合同,如下所示:

[MessageContract]
public Request<T>
{
    [MessageBodyMember]
    public T Details { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我习惯用它[DataContract(Name="Contract{0}")]来生成通用数据契约的可读名称,但这种方法似乎对我使用消息契约不起作用.

有没有办法使用消息合同模型实现相同的行为?

Tim*_*rts 2

我认为属性上有一个WrapperNameand属性可以做同样的事情。例如,WrapperNamespaceMessageContract

[MessageContract(WrapperName = "FooMessage", IsWrapped = true)]
public class Request<T>
{ ... }
Run Code Online (Sandbox Code Playgroud)

请注意添加的属性IsWrapped以指示消息应序列化到包装器元素中。