从在运行时定义了类型的泛型类型的静态方法返回System.Action
本文关键字:泛型类型 静态方法 System Action 返回 类型 运行时 定义 | 更新日期: 2023-09-27 18:25:40
下面是我试图实现的一个非常成对的例子
public class CoolClass<T>
{
public static void DoSomethingCool()
{
// Insert cool generic stuff here.
List<T> coolList = new List<T>();
}
}
public class OtherClass
{
public Action ReturnActionBasedOnStaticGenericMethodForType(Type type)
{
// Ideally this would just be
return CoolClass<type **insert magic**>.DoSomethingCool
}
}
我知道如果类型是已知的,我可以做以下操作,它将返回系统。操作
return CoolClass<string>.DoSomethingCool
我知道如果我想做的只是调用我能做的方法
Type baseType = typeof(CoolClass<>);
Type[] typeArguments = new [] {type}
Type constructedType = baseType.MakeGenericType(typeArguments);
MethodInfo method = constructedType.GetMethod("DoSomethingCool");
method.Invoke(null,null);
我可能一起走错了路。我似乎正在尝试将method
作为对DoSomethingCool
方法的引用。我想要(Action) method
这样的东西。
你就快到了-你只需要Delegate.CreateDelegate
:
Action action = (Action) Delegate.CreateDelegate(typeof(action), null, method);