猿问

为什么 GetMember(string) 返回 MemberInfo 数组?

我正在使用反射并遇到错误:

System.Reflection.TargetException:对象与目标类型不匹配

因为我以为Type.GetMember(string)只会返回一个MemberInfo,但事实并非如此

Type.GetMember(string)我很好奇return的原因MemberInfo[]。其他反射方法如Type.GetProperty()Type.GetMethod()返回它们各自的PropetyInfoMethodInfo对象。

当其他反射方法不Type.GetMember()返回数组时,返回数组的目的是什么?MemberInfo[]


慕的地6264312
浏览 98回答 2
2回答

胡子哥哥

因为您是按名称获取成员,并且可能重载具有相同名称的方法,尽管它们是不同的成员。

茅侃侃

虽然有关超载的注释是正确的,但这似乎更像是“出于历史原因”的情况。GetMethod(string)被定义为返回唯一的匹配,或者AmbiguousMatchException如果存在多个重载则抛出。 GetMember(string)只是总是返回所有匹配项。我想争论的焦点是,如果你不知道你要找什么样的成员,你也不知道有多少匹配项,所以最好返回所有匹配项。调用该方法GetMembers会更加一致,但这并不是轻易改变的事情。
随时随地看视频慕课网APP
我要回答