【问题标题】:GetMethod to get Dispose(bool disposing) dynamicallyGetMethod 动态获取 Dispose(bool disposing)
【发布时间】:2016-11-06 04:55:27
【问题描述】:

我目前正在尝试实现一个类,该类使用 TypeBuilder 来动态创建一个新类,该类派生自一个本身派生自 DbContext 的类(间接使用动态类继承自 DbContext)。

要覆盖(使用 DefineMethod + DefineMethodOverrideDispose 类,我需要先使用 GetMethod 检索它.我可以使用以下方法检索SaveChanges() 方法:

typeof(TBaseDbContext).GetMethod("SaveChanges")

但是 Dispose(bool disposing) 完全不同,因为它是受保护的并且有参数。

缩小问题范围,我得出以下代码:

        MethodInfo disposeOfBase =
            typeof(DbContext).GetMethod("Dispose",
                BindingFlags.NonPublic,
                null,
                CallingConventions.Any,
                new Type[] { typeof(bool) },
                null);

disposeOfBase 中的结果为空。我尝试了不同的组合,但我认为以上应该接近正确。我不知道为什么找不到 Dispose

我在这里做错了什么?如何修改代码以便 disposeOfBase 保存 DbContext 的受保护 Dispose 方法的信息?

【问题讨论】:

  • 试试BindingFlags.NonPublic | BindingFlags.Instance。您必须指定 Instance 或 Static 才能返回方法。

标签: c# .net reflection getmethod typebuilder


【解决方案1】:

我测试过,它有效,所以我发布上述评论作为答案:

试试BindingFlags.NonPublic | BindingFlags.InstanceYou must specify either Instance or Static to get a method back.

【讨论】:

  • 是的,这确实是问题所在。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
相关资源
最近更新 更多