通用类型,该通用类型实现具有多个类型的通用接口

时间:2018-09-17 08:56:30

标签: c# generics

我有这个界面:

interface a<A, B>
{
    A retA();
    B retB();
}

,我想创建一个泛型方法,该方法采用实现此接口的类型。

private void fa<T>() where T : a<A, B>, new(){ code}

此行不起作用(编译时错误):

  

找不到类型或名称空间A,找不到类型或名称空间B

谢谢您的帮助

2 个答案:

答案 0 :(得分:2)

您在A方法中具有三个通用参数(BTfa);其中每个都应声明已解决;有几种方法可以做到,例如

  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}