假设我有一些基本的界面,这是由泛型驱动的:
public interface Inteface<T> {
void Foo(T t);
}
现在我对这个接口有一些具体的实现,它也是通用的:
public class InterfaceImpl<T> {
public void Foo(T t) {
// Whatever
}
}
这看起来不错,但现在让我说我还有其他课程:
public class Ololo {
public void BadFunction<TShouldModelInterface>(TShouldModelInterface shouldModelInterface) {
// Whatever
}
}
让我们说我想检查TShouldModelInterface
是否实际实现了任何可能的Interface<T>
。
如果界面不是通用的,我会简单地写一些像where TShouldModelInterface : Interface
。
但如果界面是declared as Interface<T>
,有没有办法解决这个问题?
答案 0 :(得分:8)
public class Ololo {
public void BadFunction<TShouldModelInterface, T>(TShouldModelInterface shouldModelInterface)
where TShouldModelInterface : Interface<T>
{
// Whatever
}
}