我的类中有一组私有方法,我需要根据输入值动态调用一个.调用代码和目标方法都在同一个实例中.代码如下所示:

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType);
dynMethod.Invoke(this, new object[] { methodParams });

在这种情况下,GetMethod()将不会返回私有方法.我需要向GetMethod()提供什么BindingFlags才能定位私有方法?

推荐答案

只需更改代码即可使用接受BindingFlags的重载version of GetMethod:

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });

这是BindingFlags enumeration documentation美元.

.net相关问答推荐

安装特定主要版本的DotNet SDK最新版本

.NET restore/build在使用组织包的Github Action工作流中调用时获得401

SeriLog LogConext.PushProperty在ASP.NET MVC 5中不能使用OWIN中间件

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

.NET 4.5 项目未在 Visual Studio 2022 中编译

如何将 Javascript 日期时间转换为 C# 日期时间?

为什么循环引用被认为是有害的?

具有透明背景且包含不透明控件的 WPF 窗口

重新启动(回收)应用程序池

如何明智地使用 StringBuilder?

在 Moq Callback() 调用中设置变量值

struct 中需要覆盖什么以确保平等正常运行?

如何找到 ManualResetEvent 的状态?

C# 属性实际上是方法吗?

SQLParameter 如何防止 SQL 注入?

具有不同身份验证标头的 HttpClient 单个实例

如何判断对象是否已在 C# 中释放

在 .NET 中乘以时间跨度

Dictionary.Add 与 Dictionary[key]=value 的区别

您可以将 Microsoft Entity Framework 与 Oracle 一起使用吗?