GetMethod动态获取Dispose(bool disposing)

时间:2016-07-04 12:41:27

标签: c# .net reflection getmethod typebuilder

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

要覆盖(使用 DefineMethod + DefineMethodOverride Dispose 类,我需要先使用 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 方法的信息?

1 个答案:

答案 0 :(得分:1)

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

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