7
制作一个泛型类型约束,我想知道这是可能的:上Func键<T>
public class Foo<T> where T : Func<T>
或
public class Foo<T> where T : Func<>
这似乎是编译器告诉我这是不可能的。我想我可以在构造函数中抛出一个运行时异常,但希望它有一个编译器错误。
这样做的任何方法?
制作一个泛型类型约束,我想知道这是可能的:上Func键<T>
public class Foo<T> where T : Func<T>
或
public class Foo<T> where T : Func<>
这似乎是编译器告诉我这是不可能的。我想我可以在构造函数中抛出一个运行时异常,但希望它有一个编译器错误。
这样做的任何方法?
不幸的是,它看起来像你运气不好。 Func<>
和Action<>
都是委托类型,它们不能用作泛型约束。
这个答案概括起来相当不错 C# Generics won't allow Delegate Type Constraints
这里大概正确的解决方法就是接受'T',然后在课堂上使用'Func键'。 –
2014-10-04 22:30:23
我想过这个,但是我不得不像.NET人员创建17个重载来支持基本的Func的情况。 :)我知道这很愚蠢,只是想知道。 –
halivingston
2014-10-04 22:33:09
不要说这是一个好主意,但你可以关注这个https://roslyn.codeplex.com/discussions/543871线程,并在Roslyn中进行更改并使用该编译器编译你的代码。 – mjsabby 2014-10-04 22:36:40