通用约束:强制类型具有静态函数和带参数的构造函数
我知道你可以写:
class GenericClass where T : new() { }
强制执行T
有一个空的构造函数。
我的Qs是:
-
你能强制说
T
有一个具有特定参数类型的构造函数吗? 喜欢:class SingletonFactoryWithEmptyConstructor where T : new(int)
-
你能强制执行
T
有一个静态函数(比方说,void F()
),这样你就可以在generics类中使用这个函数吗? 喜欢 :class GenericClass where T : void F() { void G () { TF(); } }
我知道你可以指定
T
实现一个接口,但我不希望这样。 我想指定T
具有静态函数。
不,在C#中没有这样的东西。
我之前曾建议“静态接口”可以合理地表达这一点。 它们只对generics类型约束有用(我怀疑,无论如何)但是你可以表达:
- 具有任意参数的构造函数
- 静态方法和属性
- 运营商
在我看来,这些要点中的最后一点特别有趣,允许使用通用的“平均”方法,而不是具有合适的加法和除法运算符的数字类型。
我相信MS的一些人已经考虑过类似的东西了,但我没有听到任何暗示他们正在积极研究它的事情。