【发布时间】:2010-03-05 13:59:22
【问题描述】:
我正在构建一个使用 MessageContracts 的 Web 服务,因为我想将自定义字段添加到我的 SOAP 标头中。在previous topic 中,我了解到必须包装复合响应。为此,我设计了一个通用的 ResponseWrapper 类。
[MessageContract(WrapperNamespace = "http://mynamespace.com",
WrapperName="WrapperOf{0}")]
public class ResponseWrapper<T>
{
[MessageBodyMember(Namespace = "http://mynamespace.com")]
public T Response
{
get;
set;
}
}
我做了一个ServiceResult基类,定义如下:
[MessageContract(WrapperNamespace = "http://mynamespace.com")]
public class ServiceResult
{
[MessageBodyMember]
public bool Status
{
get;
set;
}
[MessageBodyMember]
public string Message
{
get;
set;
}
[MessageBodyMember]
public string Description
{
get;
set;
}
}
为了能够在响应中包含请求上下文,我使用了 ServiceResult 的派生类,它使用泛型:
[MessageContract(WrapperNamespace = "http://mynamespace.com",
WrapperName = "ServiceResultOf{0}")]
public class ServiceResult<TRequest> : ServiceResult
{
[MessageBodyMember]
public TRequest Request
{
get;
set;
}
}
这是以如下方式使用的
[OperationContract()]
ResponseWrapper<ServiceResult<HCCertificateRequest>> OrderHealthCertificate(RequestContext<HCCertificateRequest> context);
我希望我的客户端代码生成为
ServiceResultOfHCCertificateRequest OrderHealthCertificate(RequestContextOfHCCertificateRequest context);
相反,我得到以下信息:
ServiceResultOfHCCertificateRequestzSOTD_SSj OrderHealthCertificate(CompType1 c1, CompType2 c2, HCCertificateRequest context);
CompType1 和 CompType2 是 RequestContext 类的属性。问题是在ServiceResultOfHCCertificateRequestzSOTD_SSj 的末尾添加了一个哈希。我需要如何定义我的通用返回类型才能按预期生成客户端类型(没有哈希)?
【问题讨论】:
标签: .net asp.net wcf generics messagecontract