如何约束泛型参数以具有某个静态函数?

时间:2011-07-01 21:16:05

标签: c# asp.net-mvc-3 c#-4.0 c#-3.0 c#-2.0

我想要一个实现某些静态函数的泛型参数。作为其界面(teh静态函数)的一部分,对我来说这样的通用参数约束是合乎逻辑的,但我找不到如何做到这一点。任何帮助表示赞赏。

目前我正在通过定义返回静态值的静态属性来解决这些问题,而OOP开发人员当然不喜欢这些属性。这个属性是某个接口的一部分,而泛型参数是从接口继承的约束。

2 个答案:

答案 0 :(得分:4)

你不能 - 除非你计算需要无参数构造函数的new()约束,否则静态成员不会限制类型参数。

请注意,静态成员不能成为正常C#意义上的接口的一部分 - 尽管它们显然可以是该类型的公共API的一部分。

我之前曾在C#的未来版本中发表"static interfaces"的可能性(仅作为一种功能请求),但现在肯定无法使用。

有时,最好的选择是使用单独的类型来实现正常的界面 - 如果您可以提供有关您的上下文的更多信息,我们可能会建议其他方法。

答案 1 :(得分:0)

目前,C#中的约束不可能像你需要的那样。我也很想拥有这个功能。 :)