Unity中使用C#反射进行动态匹配方法的问题

@[TOC]Unity中使用C#反射进行动态匹配方法的问题

问题:在基类中设置动态绑定继承类的方法(包括私有,公共)坑

正常情况
StC继承FaC
在基类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中是不能返回私有方法)

不知道是否有其他方法可以实现,有进展会更新

初次写文章,布局,文笔不是很好多多包涵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值