在静态类中定义的类的约束

时间:2018-03-30 08:59:24

标签: c# namespaces

Hello有没有办法约束静态类中定义的类的泛型方法?

static class Container {
    class A {
    }
    class B {
    }
}

static class ContainerExtension
{
    //(where T  is a class defined in class Container)
    public int[] ToArray<T>(T array) {
    }
}

1 个答案:

答案 0 :(得分:2)

  

有没有办法约束静态类中定义的类的泛型方法?

不,没有。

唯一的类型限制是:

  • 需要公共无参数构造函数(where T : new()
  • 要求它是参考类型(where T : class
  • 要求它是不可为空的值类型(where T : struct
  • 要求将身份转换为特定类型或类型参数(where T : Button或其他)

对于“包含在特定类型中”没有约束,我也不希望它成为一个新功能 - 它听起来像一个非常小众的用例。

你可以创建一个只有那些类型实现的接口,但这个接近我的建议。 (如果它是在同一个包含类中声明的私有接口,只有那些可以实现它 - 但是泛型方法也需要是私有的。)