如何从WCF隐藏具有泛型返回类型的方法?

时间:2014-12-19 09:39:56

标签: .net wcf design-by-contract

我有这种情况(删节):

[ServiceContract]
public class TokenProviderService : ITokenProvider
{
    private ITokenProvider TokenProvider { get; set; }

    // BK - WCF doesn't like generic returns, so I've used an intermediary method.
    public T GetTokenValue<T>(string tokenId)
    {
        throw new NotImplementedException();
    }

    [OperationContract]
    public string GetTokenValueAsString(string tokenId)
    {
        return TokenProvider.GetTokenValueAsString(tokenId);
    }       
}

由于GetTokenValue而我实施键入的ITokenProvider的唯一原因是,&#39;石头&#39; WCF和非WCF客户端使用的contract [1]接口。我不希望将其公开为服务操作,而是使用GetTokenValueAsString,并在客户端代理中反序列化结果,该代理也实现ITokenProvider

尽管没有OperationContract属性,GetTokenValue在启动WCF项目或尝试向此类添加服务引用时会导致以下错误:

  

键入&#39; T&#39;无法导出为架构类型,因为它是打开的   通用类型。

有什么办法可以告诉WCF忽略这个方法吗?

[1]不是WCF合同,而是更一般的设计合同。

0 个答案:

没有答案