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

假设我有一些基本接口是泛型驱动的:

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是否实际实现了任何可能的接口< T>.

如果接口不是通用的,我会简单地写一些类似TShouldModelInterface:Interface的地方.

但如果接口声明为接口< T>?,有没有办法解决这个问题?

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

转载注明原文:C#泛型问题 – 通用接口约束 - 代码日志