我有这种情况(删节):
[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合同,而是更一般的设计合同。