小编典典

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

c#

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

public Collection MethodThatFetchesSomething<T>()
    where T : SomeBaseClass
{
    return T.StaticMethodOnSomeBaseClassThatReturnsCollection();
}

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

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


阅读 655

收藏
2020-05-19

共1个答案

小编典典

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

T.StaticMethodOnSomeBaseClassThatReturnsCollection

…没有什么不同:

SomeBaseClass.StaticMethodOnSomeBaseClassThatReturnsCollection

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

2020-05-19