@[TOC]Unity中使用C#反射进行动态匹配方法的问题
问题:在基类中设置动态绑定继承类的方法(包括私有,公共)坑
正常情况
StC继承FaC
在基类FaC添加动态绑定方法
FaC基类
StC继承于FaC
实例StC,并调用初始化方法(原来是直接在基类构造函数中直接绑定,不用再实例继承类)
输出
由于Sed1方法是private 私有的,
无法获取到
Sed2 是Public
可以获取到
这是正常情况
GetType().GetMethod(“Sed”+a)
是不能获取到公共方法的
参考地址https://learn.microsoft.com/zh-cn/dotnet/api/system.type.getmethod?view=net-7.0
GetType().GetMethod(“Sed”+a,BindingFlags.Instance | BindingFlags.Public|BindingFlags.NonPublic);
可以获取到公共,私有,重写等方法
但让我奇怪的是,公司的代码并没有在GetMathod 方法设置第二个参数,也能获取到私有方法
调用
输出
继承类方法
一开始我以为是需要打成DLL时有转换方法的访问级别
(我也打成DLL进行操作,可能是配置不对,我没试出来)
但在输出中可以看到, IsPrivate =true IsPublic =false
这说明,找到的这个方法是一个私有方法,而且还能被GetMethod()返回
(按照上面的Demo中是不能返回私有方法)
不知道是否有其他方法可以实现,有进展会更新
初次写文章,布局,文笔不是很好多多包涵