下面是我想要实现的一个非常完美的示例
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
}
}
我知道如果知道类型我可以执行以下操作,它将返回System.Action
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
的内容。
答案 0 :(得分:3)
你快到了 - 你只需要Delegate.CreateDelegate
:
Action action = (Action) Delegate.CreateDelegate(typeof(action), null, method);