.net MessageContract、泛型返回类型和客户端命名存在问题

.net MessageContract、泛型返回类型和客户端命名存在问题,.net,asp.net,wcf,generics,messagecontract,.net,Asp.net,Wcf,Generics,Messagecontract,我正在构建一个使用MessageContracts的web服务,因为我想将自定义字段添加到SOAP头中。在一个例子中,我了解到必须包装复合响应。为此,我设计了一个通用的ResponseWrapper类 [MessageContract(WrapperNamespace = "http://mynamespace.com", WrapperName="WrapperOf{0}")] public class ResponseWrapper<T>

我正在构建一个使用MessageContracts的web服务,因为我想将自定义字段添加到SOAP头中。在一个例子中,我了解到必须包装复合响应。为此,我设计了一个通用的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",
                WrapperName = "ServiceResultOf{0}")]
public class ServiceResult<TRequest> : ServiceResult
{
    [MessageBodyMember]
    public TRequest Request
    {
        get;
        set;
    }
}
相反,我得到以下信息:

ServiceResultOfHCCertificateRequestzSOTD_SSj OrderHealthCertificate(CompType1 c1, CompType2 c2, HCCertificateRequest context);

CompType1和CompType2是RequestContext类的属性。问题是在ServiceResultOfHCCertificateRequestzSOTD_SSj的末尾添加了一个哈希。我需要如何定义我的泛型返回类型,以便在没有散列的情况下按预期生成客户端类型?

我们在通过WCF返回泛型列表时也遇到了问题

对我们有效的解决方案是创建一个具有单个属性的类,该属性是一个泛型列表


然后我们通过WCF发送该类。如果你有很多这样的列表,你可以创建一个类型为T的类。这样,当你创建这个类时,你可以指定你想要的列表类型。

我使用泛型返回类型,所以我不必定义一大堆特定的类。也许我不明白你的意思,你能再详细解释一下吗?
[OperationContract()]
ResponseWrapper<ServiceResult<HCCertificateRequest>> OrderHealthCertificate(RequestContext<HCCertificateRequest> context);
ServiceResultOfHCCertificateRequest OrderHealthCertificate(RequestContextOfHCCertificateRequest context);
ServiceResultOfHCCertificateRequestzSOTD_SSj OrderHealthCertificate(CompType1 c1, CompType2 c2, HCCertificateRequest context);