GetMethod动态获取Dispose(bool Dispose)
本文关键字:Dispose bool GetMethod 获取 动态 | 更新日期: 2023-09-27 17:54:27
我目前正在尝试实现一个类,使用TypeBuilder来动态创建一个新类,该类派生自一个类,该类本身派生自DbContext(也就是说,动态类间接继承自DbContext)。
要重写(用 definemethomethod + definemethoverride ) Dispose类,我需要首先使用GetMethod检索它。我能够通过使用以下命令检索SaveChanges()
方法:
typeof(TBaseDbContext).GetMethod("SaveChanges")
然而Dispose(bool Dispose)是完全不同的,因为它是受保护的,并且有参数。
将问题缩小到以下代码:
MethodInfo disposeOfBase =
typeof(DbContext).GetMethod("Dispose",
BindingFlags.NonPublic,
null,
CallingConventions.Any,
new Type[] { typeof(bool) },
null);
disposeOfBase的结果为null。我尝试过不同的组合,但我认为上述应该是接近正确的。我不知道为什么没有找到Dispose。
我在这里做错了什么?如何修改代码,使disposeOfBase保存DbContext的受保护Dispose方法的信息?
我测试了一下,它起作用了,所以我把上面的评论作为回答:
Try BindingFlags.NonPublic | BindingFlags.Instance
。您必须指定Instance或Static来返回方法