【发布时间】:2013-06-19 23:44:04
【问题描述】:
我有这样的课:
public class Proxy<TClient>()
where TClient : ClientBase<TChannel>
{
}
我希望能够指定如下内容:
where TClient : ClientBase<TChannel>
where TChannel : class
但没有在类定义中指定它,如下所示:
public class Proxy<TClient, TChannel>()
有没有办法做到这一点,或者我是否需要像上面那样定义第二种类型?
【问题讨论】:
-
TChannel是从哪里来的? -
不,您不能这样做,是的,您需要在代理声明中指定第二个通用参数:
Proxy<TClient, TChannel>。 -
@Dan
TChannel是ClientBase所必需的(来自 System.ServiceModel)。没有非通用的替代品。 -
我明白,但在你的代码中,它没有在任何地方定义。您必须将其声明为泛型类型参数,这是您要避免的。你所要求的无法完成。
-
你在课堂上用
TClient做什么?您可能会省略TClient,而只使用ClientBase<TChannel>声明成员,具体取决于使用情况。
标签: c# generics type-constraints