2011-10-02 137 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是實現該接口的類的實例方法。沒有必要讓這種方法是靜態的。