gpt4 book ai didi

c# - 从 GenericClass 访问静态方法,其中 T 由 Type 实例给出

转载 作者:太空狗 更新时间:2023-10-30 01:06:19 25 4
gpt4 key购买 nike

我有一个带有静态方法的泛型类,该方法使用类型参数:

GenericClass<T>
{
public static void Method()
{
//takes info from typeof(T)
}
}

现在,我需要访问该静态方法,但不只是使用 GenericClass<KnownType>.Method() .我需要使用 Type 实例来执行此操作。所以:

public void OutsiderMethod(Type T)
{
GenericClass<T>.Method()
//it's clear this line won't compile, for T is a Type instance
//but i want some way to have access to that static method.
}

使用反射,我可能可以通过它的字符串名称,使用一些 MethodInfo 东西来调用该方法。这部分好,解决了问题。但如果可能的话,我希望不必将名称用作字符串。

有人吗???

最佳答案

非泛型类的泛型方法比泛型类的非泛型方法更容易访问。

您可以创建一个简单地调用真实方法的辅助方法:

void OutsiderMethodHelper<T>()
{
GenericClass<T>.Method();
}

然后您可以获取该方法的 MethodInfo,而无需通过名称字符串查找它:

public void OutsiderMethod(Type T)
{
Action action = OutsiderMethodHelper<object>;
action.Method.GetGenericMethodDefinition().MakeGenericMethod(T).Invoke(null, null);
}

关于c# - 从 GenericClass<T> 访问静态方法,其中 T 由 Type 实例给出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com