如何通过reflection找到重载方法

这是我之前提出的另一个问题的问题 。 我有一个重载的方法:

public void Add(SomeType some) { } public void Add(AnotherType another) { } 

如何通过reflection找到每种方法? 例如,如何通过reflection获得Add(SomeType some)方法? 你能帮我吗? 提前致谢。

这里的技巧是描述您希望参数为SomeType ,其中TAdd方法的generics类型。

除此之外,它只是使用标准reflection,就像CastroXXL在他的回答中所建议的那样。

我是这样做的:

 var theMethodISeek = typeof(MyClass).GetMethods() .Where(m => m.Name == "Add" && m.IsGenericMethodDefinition) .Where(m => { // the generic T type var typeT = m.GetGenericArguments()[0]; // SomeType var someTypeOfT = typeof(SomeType<>).MakeGenericType(new[] { typeT }); return m.GetParameters().First().ParameterType == someTypeOfT; }) .First(); 

查看MethodInfo成员: http : //msdn.microsoft.com/en-US/library/system.reflection.methodinfo_members( v=vs.80) .aspx

IsGenericMethodDefinitionGetParameters有辅助属性。 两者都可以帮助你弄清楚什么function是什么。