【发布时间】:2011-06-03 16:19:03
【问题描述】:
我有一个通用服务接口:
[ServiceContract]
public interface IService<T> where T : Class1
{
[OperationContract]
void DoWork(T class1);
}
然后我有一个继承自它的具体服务:
public class Service : IService<Class1>
{
public void DoWork(Class1 class1)
{
}
}
在我添加 webHttpEndpoint 以公开 JSON WS 之前,一切正常:
<service name="Service">
<endpoint
address=""
binding="webHttpBinding"
behaviorConfiguration="webHttpBehavior"
contract="IService" />
</service>
<behavior name="webHttpBehavior">
<enableWebScript />
</behavior>
事实上,我收到了这个错误:
合同名称“IService”不能 可以在合同列表中找到 由服务“Service”实现。
这是因为接口的通用定义。 有什么解决办法吗?
【问题讨论】:
-
好吧,你的
Service没有实现IService(正如错误清楚地表明的那样) - 它实现了IService<Class1>- 这是一个不同的接口...... -
感谢您的回答。如何在我的 web.config 中设置它?
-
您可以尝试使用
contract="IService<Class1>",但恐怕这行不通。 WCF 不太适合泛型..... -
感谢您的回答。它不起作用。
标签: wcf