0

可以嵌套泛型参数class MyClass<TG<TM>>{}吗?

我尝试了一些方法,得到了以下代码,但是类声明需要接收分开的两个参数:

class MyClass1<TG, TM>
    where TM : MyType
    where TG : OtherType<TM> {

    public TM DoSomething() {
    }

    public TG DoSomething2() {
    }
}

那是唯一的方法吗?

编辑:

如您所见,我需要类中的两个泛型参数(同时使用的成员:TM 和 TG),因此 TG 是泛型参数,不能是类型(在这种情况下),答案和评论建议我' hardcode' 两个参数之一对这个问题没有贡献。

好吧,使用上面的示例,我们可以像(并且有效)一样使用它:

new MyClass<A<B>, B>();

在我的情况下,第二个参数将始终与第一个参数的嵌套参数一起使用。所以,我问我们是否可以省略第二个参数,编译器从第一个参数的参数推断它。

是否有可能而不是有两个单独的参数?

4

1 回答 1

2

这取决于您想要达到的目标。如果您想MyClass1拥有两个不同的泛型参数,那么您展示的代码就是要走的路。

class MyClass<TG<TM>>{}: 这实际上意味着MyClass有一个通用参数。而您正在传入TG<TM>,这意味着它TG也是一个泛型类,它TM作为其泛型参数接收。

因此,要使该代码正常工作,您需要以下内容:

class TM {}
class TG<T> {}
class MyClass<T> {}

现在,你可以这样称呼:

new MyClass<TG<TM>>();
于 2013-01-30T17:54:05.890 回答