我想知道是否有人能够演示如何使用 Type 的 GetMethod() 方法来检索以下签名的 MethodInfo 对象:
Class.StaticMethod<T>(T arg1, IInterface1 arg2, IEnumerable<IInterface2> arg3)
Thanks,
Xam
MethodInfo methodInfo = typeof(Class)
.GetMethods(
BindingFlags.Public | BindingFlags.Static
)
.Where(m => m.Name == "StaticMethod")
.Where(m => m.IsGenericMethod)
.Where(m => m.GetGenericArguments().Length == 1)
.Where(m => m.GetParameters().Length == 3)
.Where(m =>
m.GetParameters()[0].ParameterType ==
m.GetGenericArguments()[0] &&
m.GetParameters()[1].ParameterType ==
typeof(IInterface1) &&
m.GetParameters()[2].ParameterType ==
typeof(IEnumerable<IInterface2>)
)
.Single();
请注意,您必须遵循此操作
methodInfo = methodInfo.MakeGenericMethod(new Type[] { typeof(ConcreteType) });
关闭类型,其中ConcreteType
是您想要的类型参数的类型T
.
我假设:
class Class {
public static void StaticMethod<T>(
T arg1,
IInterface1 arg2,
IEnumerable<IInterface2> arg3
) { }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)