C#泛型问题 - 通用接口约束

时间:2010-12-10 11:10:37

标签: c# generics

假设我有一些基本的界面,这是由泛型驱动的:

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>,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:8)

public class Ololo {
   public void BadFunction<TShouldModelInterface, T>(TShouldModelInterface shouldModelInterface)
       where TShouldModelInterface : Interface<T>
   {
      // Whatever
   }
}