gpt4 book ai didi

wcf - 通用服务接口(interface)

转载 作者:行者123 更新时间:2023-11-30 23:49:20 24 4
gpt4 key购买 nike

我有一个通用服务接口(interface):

[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>

事实上,我收到了这个错误:

The contract name 'IService' could not be found in the list of contracts implemented by the service 'Service'.



这是因为接口(interface)的通用定义。
有什么解决办法吗?

最佳答案

在我看来(并且基于你所说的),接口(interface)不需要是通用的。调用者只需要知道有一个 DoWork 操作。

所以基本上,将具体类更改为通用而不是接口(interface)。

public class Service<T> : IService where T : Class1
{
public void DoWork()
{
}
}

澄清问题后编辑:您还需要在配置文件中提供通用参数:
contract="YourAssembly.IService`1[[YourAssembly.Class1, YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"

这是一个类似的问题: Inheriting from a generic contract in WCF

关于wcf - 通用服务接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com