我想知道这是否可行:
public class Foo<T> where T : Func<T>
或
public class Foo<T> where T : Func<>
似乎编译器告诉我它不可能。我想我可以在构造函数中抛出一个运行时异常,但是希望它有一个编译器错误。
有关这方面的任何方法吗?
答案 0 :(得分:6)
不幸的是,看起来你运气不好。 Func<>
和Action<>
都是委托类型,不能用作泛型类型约束。
答案 1 :(得分:0)
正如另一个答案所告知的那样,您无法实现Func的泛型类型约束,但是C#7.3允许您执行这样的约束
public class Foo<T> where T : Delegate
或
public class Foo<T> where T : MulticastDelegate
那是您可以获得的最接近的东西。