如何通过reflection找到重载方法
这是我之前提出的另一个问题的问题 。 我有一个重载的方法:
public void Add(SomeType some) { } public void Add(AnotherType another) { }
如何通过reflection找到每种方法? 例如,如何通过reflection获得Add(SomeType some)
方法? 你能帮我吗? 提前致谢。
这里的技巧是描述您希望参数为SomeType
,其中T
是Add
方法的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
IsGenericMethodDefinition
和GetParameters
有辅助属性。 两者都可以帮助你弄清楚什么function是什么。