2011-10-02 142 views
2
interface TerminationCondition 
{ 
    static bool IsSatisfied(some parameters); 
} 

比方说,一些类A和B实现此接口。如何在类中为泛型类型调用静态方法?

一些其他的C类有一个通用型:

class C<termCondition> where termCondition : TerminationCondition 

我需要从C调用相应IsSatisfied,我是否通过A或B的泛型类型。出于某种原因,它不可能termCondition.IsSatisfied()。

总之,问题是我如何要求一个类中的泛型类型的静态方法?

回答

6

这是不可能的。

事实上,你不能在所有接口中的静态方法。

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

由于@SLaks指出的那样,你不能在一个接口的静态方法。让它们成为泛型类型往往很笨拙。

@Austin也使得一个好点。

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

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

由于termCondition要求是TerminationCondition类型的,你可以简单的有IsSatisfied是实现该接口的类的实例方法。没有必要让这种方法是静态的。