|
|
1
66
许多类不可用作泛型约束——枚举是另一个。 对于委托,你能得到的最接近的结果是“:class”,也许可以使用反射来检查(例如,在静态构造函数中)T 是 代表:
|
|
2
19
是的,在C#7.3中,约束家族增加到包括
有用链接: The future of C# ,来自微软Build 2018 |
|
|
3
13
编辑: 这些文章中提出了一些建议的解决方案: http://jacobcarpenters.blogspot.com/2006/06/c-30-and-delegate-conversion.html http://jacobcarpenters.blogspot.com/2006_11_01_archive.html 从 C# 2.0 specification 我们可以读到(20.7,约束): 类类型约束必须满足以下规则:
果然,VS2008抛出了一个错误:
有关此问题的信息和调查,请阅读 here . |
|
|
4
10
如果你愿意在编译时依赖IL Weaver,你可以用 Fody . 将此插件用于Fody https://github.com/Fody/ExtraConstraints 你的代码可以看起来像这样
并被编译成这个
|
|
|
5
3
我遇到了一个需要处理的情况
但是,您可以传递一个为您进行转换的函数。
现在编译器很高兴。调用该方法很容易。例如,附加到
哪里
(从280Z28开始)@Justin:为什么不使用这个?
(280Z28结束) |
|
|
6
3
Delegate已经支持链接。这不符合你的需求吗?
|
|
7
2
如上所述,您不能将委托和枚举作为泛型约束。
如果你在你的IL中构建一个适当的调用,那么解决方法就是。它会很好地工作。 这是Jon Skeet的一个很好的例子。 http://code.google.com/p/unconstrained-melody/ 我引用了乔恩·斯基特的书 C#深度 ,第三版。 |
|
|
8
1
|