我有这个界面:
interface a<A, B>
{
A retA();
B retB();
}
,我想创建一个泛型方法,该方法采用实现此接口的类型。
private void fa<T>() where T : a<A, B>, new(){ code}
此行不起作用(编译时错误):
找不到类型或名称空间A,找不到类型或名称空间B
谢谢您的帮助
答案 0 :(得分:2)
您在A
方法中具有三个通用参数(B
,T
,fa
);其中每个都应声明或已解决;有几种方法可以做到,例如
public class Sample1<A, B> {
// Class declares A and B; method declares T
private void fa<T>() where T : a<A, B>, new() {
// Code
}
}
public class Sample2 {
// Method declares all three generic types: A, B and T
private void fa<T, A, B>() where T : a<A, B>, new() {
// Code
}
}
public class Sample3 {
// Method declares T; A and B are resolved (explict types: string and int)
private void fa<T>() where T : a<string, int>, new() {
// Code
}
}
public class Sample4<A> {
// Class declares A; method declares T; B is resolved (explicit type int)
private void fa<T>() where T : a<A, int>, new() {
// Code
}
}
等等。
答案 1 :(得分:0)
德米特里·拜琴科给出的答案:
fa<T, A, B>() where T : a<A, B>, new(){ code}