为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕的地6264312 2023-08-20 10:06:23
我正在使用反射并遇到错误:System.Reflection.TargetException:对象与目标类型不匹配因为我以为Type.GetMember(string)只会返回一个MemberInfo,但事实并非如此。Type.GetMember(string)我很好奇return的原因MemberInfo[]。其他反射方法如Type.GetProperty()和Type.GetMethod()返回它们各自的PropetyInfo和MethodInfo对象。当其他反射方法不Type.GetMember()返回数组时,返回数组的目的是什么?MemberInfo[]
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

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


查看完整回答
反对 回复 2023-08-20
?
茅侃侃

TA贡献1842条经验 获得超21个赞

虽然有关超载的注释是正确的,但这似乎更像是“出于历史原因”的情况。

GetMethod(string)被定义为返回唯一的匹配,或者AmbiguousMatchException如果存在多个重载则抛出。 GetMember(string)只是总是返回所有匹配项。

我想争论的焦点是,如果你不知道你要找什么样的成员,你也不知道有多少匹配项,所以最好返回所有匹配项。

调用该方法GetMembers会更加一致,但这并不是轻易改变的事情。


查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信