GetMethod 动态获取 Dispose(bool disposing)
GetMethod to get Dispose(bool disposing) dynamically
我目前正在尝试实现一个 class,它使用 TypeBuilder 动态创建一个新的 class,它派生自 class本身派生自 DbContext(i.o.w。动态 class 间接继承自 DbContext)。
覆盖(使用 DefineMethod + DefineMethodOverride)Dispose class我需要先使用 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
。 You must specify either Instance or Static to get a method back.
我目前正在尝试实现一个 class,它使用 TypeBuilder 动态创建一个新的 class,它派生自 class本身派生自 DbContext(i.o.w。动态 class 间接继承自 DbContext)。
覆盖(使用 DefineMethod + DefineMethodOverride)Dispose class我需要先使用 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
。 You must specify either Instance or Static to get a method back.