可以嵌套像class MyClass<TG<TM>>{}
这样的通用参数吗?
我尝试了一些方法并获得了以下代码,但是类声明需要接收分开的两个参数:
class MyClass1<TG, TM>
where TM : MyType
where TG : OtherType<TM> {
public TM DoSomething() {
}
public TG DoSomething2() {
}
}
这是唯一的方法吗?
修改
正如你所看到的,我需要类中的两个泛型参数(使用两者的成员:TM和TG),因此TG是一个通用参数,不能是一个类型(在这种情况下),答案和评论建议我来'硬编码'这两个参数中的一个对这个问题没有贡献。
嗯,通过上面的示例,我们可以像(和工作)一样使用它:
new MyClass<A<B>, B>();
在我的例子中,第二个参数与第一个参数的嵌套参数一样。所以,我问我们是否可以省略第二个参数,编译器会从第一个参数的参数中推断出它。
这样的事情是否可能而不是有两个独立的参数?
答案 0 :(得分:2)
这取决于你想要达到的目标。如果您希望MyClass1
有两个不同的通用参数,那么您展示的代码就是您的选择。
class MyClass<TG<TM>>{}
:这实际上意味着MyClass
有一个通用参数。您传递的是TG<TM>
,这意味着TG
也是一个通用类,它接收TM
作为其通用参数。
因此,要使该代码有效,您需要以下内容:
class TM {}
class TG<T> {}
class MyClass<T> {}
现在,你可以这样称呼:
new MyClass<TG<TM>>();