欢迎光临散文网 会员登陆 & 注册

C#笔记:反射执行方法与遍历调用方法

2021-11-25 17:01 作者:流年夏华  | 我要投稿

反射执行方法:

代码参考编程猎人:

https://www.programminghunter.com/article/4509385212/

代码思路:

1、获得需要反射的Test类的类名,typeof返回的字符串为命名空间+类名:"反射调用方法.Test";同时需要调用的类中的方法Method(这里偷懒直接用字符串表示了)。

2、将strClass由字符串转为Type,并由此创建一个类的实例,等同于new Test()。

3、用type.GetMethod获取Test类中指定名字的方法,并且用Type[]{}匹配参数,成功后的方法被存入MethodInfo类型的变量mi中。

4、用object[]创建要传入的实参parameters。

5、mi执行Invoke方法,传入被创建的Test实例obj和实参parameters,方法Method就会执行了。

遍历执行方法:

代码思路:

创建一个虚拟类作为基类,创建几个子类实现基类的Call方法,在主程序中创建一个List把不同的实例装入,遍历所有实例的Call方法。

反射执行方法与遍历调用方法各有优劣,反射执行方法的优点在于更加灵活,可以调用重载的方法,缺点是过于复杂晦涩,且需要预先知道类中需要调用的方法和参数;遍历调用方法则较为简单直观,缺点是无法重载方法。

在我的观察中,似乎Unity引擎使用了前者来调用gameObject的方法,而Godot引擎使用后者来调用Node的方法。

至于选择什么样的方案,还是要看项目的具体情况。

C#笔记:反射执行方法与遍历调用方法的评论 (共 条)

分享到微博请遵守国家法律