继承泛型类T必须是引用类型

时间:2011-03-30 22:47:49

标签: c# generics

public class _Base_Client<T> : System.ServiceModel.ClientBase<T>

它抱怨The type 'T' must be a reference type in order to use it as parameter 'TChannel'

T是对接口的引用。

以下是我希望更改为使用新基类

的行
public class EchoServiceClient : 
    System.ServiceModel.ClientBase<IEchoService>, IEchoService

我该如何解决这个问题?感谢

2 个答案:

答案 0 :(得分:10)

变化:

public class _Base_Client<T> : System.ServiceModel.ClientBase<T>

要:

public class _Base_Client<T> : System.ServiceModel.ClientBase<T> where T : class

类中的约束必须至少与其基类(ClientBase)中定义的约束一样严格。也就是说,这是ClientBase

的声明
public abstract class ClientBase<TChannel> : ICommunicationObject, 
    IDisposable where TChannel : class

注意class约束。

答案 1 :(得分:0)

你不能在那里使用界面。您需要IEchoService的具体实现。