我知道你可以写:
class GenericClass<T> where T : new()
{
}
强制 T
有一个空的构造函数。
我的问题是:
你能强制
T
有一个带有特定类型参数的构造函数吗?喜欢:class SingletonFactoryWithEmptyConstructor<T> where T : new(int)
您能否强制
T
具有静态函数(比方说,void F()
)以便您可以在泛型类中使用该函数?喜欢:class GenericClass<T> where T : void F() { void G () { T.F(); } }
我知道您可以指定
T
实现接口(interface),但我不希望那样。我想指定T
有一个静态函数。
最佳答案
不,C# 中没有这样的东西。
我之前建议 "static interfaces"可以合理巧妙地表达这一点。它们仅对泛型类型约束有用(无论如何我怀疑)但是你可以表达:
- 具有任意参数的构造函数
- 静态方法和属性
- 运营商
在我看来,最后一点特别有趣,它允许使用合适的加法和除法运算符对数字类型使用通用的“平均”方法。
我相信 MS 的一些人已经考虑过类似的事情,但我没有听到任何迹象表明他们正在积极致力于此。
关于c# - 通用约束 : Enforce type to have static function and constructor with parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919773/