如何在类中为泛型类型调用静态方法?
问题描述:
interface TerminationCondition
{
static bool IsSatisfied(some parameters);
}
比方说,一些类A和B实现此接口。如何在类中为泛型类型调用静态方法?
一些其他的C类有一个通用型:
class C<termCondition> where termCondition : TerminationCondition
我需要从C调用相应IsSatisfied,我是否通过A或B的泛型类型。出于某种原因,它不可能termCondition.IsSatisfied()。
总之,问题是我如何要求一个类中的泛型类型的静态方法?
答
这是不可能的。
事实上,你不能在所有接口中的静态方法。
答
bool result = C<TerminationCondition>.IsSatisfied();
由于@SLaks指出的那样,你不能在一个接口的静态方法。让它们成为泛型类型往往很笨拙。
@Austin也使得一个好点。
您可以有静态泛型方法(通常在非泛型类型);这些都有它们的用途。
public static bool IsSatisfied<T>(T condition)
where T: TerminationCondition
答
由于termCondition
要求是TerminationCondition
类型的,你可以简单的有IsSatisfied
是实现该接口的类的实例方法。没有必要让这种方法是静态的。