。NET如何通过反射调用某个对象的私有方法?
咨询区
我的类中有一组私有方法,我现在想根据灵活的输入值来动态调用其中的私有方法,代码类似是这个样子。 MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType); dynMethod.Invoke(this, new object[] { methodParams });
代码跑起来后,我发现 dynMethod 并没有返回结果,请问我该如何配置才能正确的返回? 回答区
如果你真的想解决这个问题,个人建议你写个扩展方法,比如下面这样。 static class AccessExtensions { public static object call(this object o, string methodName, params object[] args) { var mi = o.GetType ().GetMethod (methodName, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance ); if (mi != null) { return mi.Invoke (o, args); } return null; } }
然后可以这样使用 class Counter { public int count { get; private set; } void incr(int value) { count += value; } } [Test] public void making_questionable_life_choices() { Counter c = new Counter (); c.call ("incr", 2); // "incr" is private ! c.call ("incr", 3); Assert.AreEqual (5, c.count); }
微软最近修改了 反射API ,在新的反射模式和平台下,大概是这么写的。 obj.GetType().GetTypeInfo().GetDeclaredMethod("MethodName").Invoke(obj, yourArgsHere);
实践中最好还是封装成一个 泛型方法 ,比如下面这样。 public static object InvokeMethod(this T obj, string methodName, params object[] args) { var type = typeof(T); var method = type.GetTypeInfo().GetDeclaredMethod(methodName); return method.Invoke(obj, args); }
注意: 如果你需要调用的方法是在 obj 的基类中,那这里的泛型参数 T 要显式定义为基类。如果你需要调用的方法是一个 异步方法 , 你可以使用 await (Task) obj.InvokeMethod(…) 。点评区
确实微软已经优化了各种 反射Api ,使用起来虽然较慢,但相比以前要好很多了。
文章来源于NET技术问答 ,作者Stackoverflow
百度助力AI人才,探索人工智能的无限可能近日,2021百度奖学金十强名单出炉。本届百度奖学金获得者的研究主要集中在算法数据识别自动驾驶生物医学等创新领域。百度创始人董事长兼CEO李彦宏将在12月27日召开的百度AI开发者
人社部发布外卖员技能标准,美团持续优化骑手职业发展路径读创深圳商报记者陈姝近日,人力资源和社会保障部正式发布网约配送员国家职业技能标准(以下简称标准),将网约配送员职业分为五个等级,明确了各等级需掌握的工作内容技能要求和相关知识,让网
互联网回收新模式健全再生资源回收利用网络,加强生活垃圾分类回收与再生资源回收的衔接。是我国十三五明确指出的规划方向,两网融合已成为国家推进生态文明和新型城镇化建设的重要改革与创新举措。科达回收从实
今日热点新东方上线东方甄选直播滴滴延长员工股票禁售期1工信部回应steam主域名被拉黑没有收到相关通知12月28日,记者发现Steam的主域名被工信部列入黑名单。工信部工作人员在采访中回应并不清楚该域名被拉黑的原因,但肯定是有违法违
抓住新一代移动通信发展新机遇来源人民网人民日报现阶段处于5G商用推进与6G研究布局的叠加期,要大力推进5G商用成熟和技术演进,为发展好6G架桥铺路,积极开展全球6G技术交流合作,主动抓住新一代移动通信发展的新
从薇娅逃税,到王力宏,再到联想柳传志,你的纯真还剩多少?这个提问者太能联想了。王力宏那是如假包换的美国人,他如果违反了法律法规的话,就对他依法处理。他如果违反了道德的话,那就撵出中国,让他滚回他的美国去。薇娅偷逃税的行为,已经被处罚了。
怎么做一个微信小程序?一站传媒公司微信小程序搭建制作真的那么重要吗?据业内人士透露,今朝,小程序天天以23000多的速率连续增加了近一个月,为什么小程序受到云云多的商家追捧。小程序真的那么紧张吗?小程序
纯国产!紫光发布两款6nm芯片中兴海信首发昨日晚间,国产芯片厂商紫光展锐举办线上芯片发布会,正式带来了唐古拉T770和唐古拉T760两款芯片,并宣布实现了量产,将会应用在不同品牌的终端上。唐古拉T770和唐古拉T760这两
雅迪ET300D三轮乘用车评测最大可配60V58Ah电池,续航100公里今年以来,随着市场需求不断扩大,三轮乘用车市场快速发展,而各大车企也都加大对这类车型的打造力度。不过,从推出的车型来看,很多三轮乘用车都存在同一个问题,那就是续航短。对此,有用户问
荣耀X30骁龙695,定价终于良心了?本月新款荣耀X30,还没开售就引起很多人的关注。荣耀X30正面屏幕采用6。81英寸LCD材质中置挖孔设计,分辨率23881080像素。前置摄像头像素为1600W。屏幕支持120Hz
2021年12月28日百度大裁员内幕YY财务爆雷成导火索近日,据新浪科技报道称,百度正在进行一轮大规模裁员,直播业务裁员比例90,游戏部门300多人几乎全部被裁。百度副总裁移动生态用户增长部总负责人互动