interface TerminationCondition
{
static bool IsSatisfied(some parameters);
}
假设一些类A和B实现了这个接口。
其他一些C类具有泛型类型:
class C<termCondition> where termCondition : TerminationCondition
我需要相应地从C调用IsSatisfied,无论我是通过A还是B传递泛型类型。由于某种原因,它不可能是termCondition.IsSatisfied()。
总而言之,问题是如何在类中为泛型类型调用静态方法?
答案 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