在泛型类型参数上调用静态方法

我希望这样做,但是在C#中似乎是非法的:

public Collection MethodThatFetchesSomething<T>()

where T : SomeBaseClass

{

return T.StaticMethodOnSomeBaseClassThatReturnsCollection();

}

我收到一个编译时错误:“’T’是一个’类型参数’,在给定的上下文中无效。”

给定通用类型参数,如何在通用类上调用静态方法?给定约束,静态方法必须可用。

回答:

在这种情况下,您应该直接在约束类型上调用static方法。C#(和CLR)不支持虚拟静态方法。所以:

T.StaticMethodOnSomeBaseClassThatReturnsCollection

…没有什么不同:

SomeBaseClass.StaticMethodOnSomeBaseClassThatReturnsCollection

通过泛型类型参数是不需要的间接寻址,因此不受支持。

以上是 在泛型类型参数上调用静态方法 的全部内容, 来源链接: utcz.com/qa/423825.html

回到顶部