我在C#4.0中使用泛型。这是我的代码:
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
// error here
public class GenericClass2<GenericClass1<T1, T2>>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
编译GenericClass2&#34时出错;类型参数声明必须是标识符而不是类型&#34;。任何人帮我救援或找到这种通用案例的解决方案。感谢。
答案 0 :(得分:2)
不幸的是,你不能在类定义中使用嵌套声明:GenericClass2<GenericClass1<T1, T2>>
。您可以改为使用此类代码:
public class GenericClass1<T1, T2>
where T1: Class1
where T2: Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<T1, T2, T3>
where T1: Class1
where T2: Class2
where T3:GenericClass1<T1, T2>
{
}
public class MyClass2 : GenericClass2<SubClass1, SubClass2, MyClass1>
{
}
答案 1 :(得分:2)
你也可以使用如下 -
public class Class1
{
}
public class SubClass1 : Class1
{
}
public class Class2
{
}
public class SubClass2 : Class2
{
}
public class GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}
public class MyClass1 : GenericClass1<SubClass1, SubClass2>
{
}
public class GenericClass2<U>
where U : GenericClass1<SubClass1, SubClass2>
{
}
public class MyClass2 : GenericClass2<MyClass1>
{
}
答案 2 :(得分:1)
试试这个:
public class GenericClass2<TGeneric, T1, T2>
where TGeneric: GenericClass1<T1, T2>
where T1 : Class1
where T2 : Class2
{
}