如何在类中为泛型类型调用静态方法?

时间:2011-10-02 01:55:00

标签: c#

interface TerminationCondition
{
    static bool IsSatisfied(some parameters);
}

假设一些类A和B实现了这个接口。

其他一些C类具有泛型类型:

class C<termCondition> where termCondition : TerminationCondition

我需要相应地从C调用IsSatisfied,无论我是通过A还是B传递泛型类型。由于某种原因,它不可能是termCondition.IsSatisfied()。

总而言之,问题是如何在类中为泛型类型调用静态方法?

3 个答案:

答案 0 :(得分:6)

这是不可能的。

实际上,根本不能在接口中使用静态方法。

答案 1 :(得分:2)

由于termCondition必须是TerminationCondition类型,因此您可以简单地将IsSatisfied作为实现该接口的类的实例方法。根本没有必要让这种方法保持静态。

答案 2 :(得分:1)

bool result = C<TerminationCondition>.IsSatisfied();

正如@SLaks指出的那样,你不能在接口中使用静态方法。将它们放在通用类型中往往会很尴尬。

@Austin也提出了一个很好的观点。

您可以使用静态泛型方法(通常使用非泛型类型);这些都有它们的用途。

public static bool IsSatisfied<T>(T condition)
    where T: TerminationCondition