我有一个带有以下签名的函数:
private void Foo<TPoco>(IContext context, List<TPoco> pocos, DateTime modifiedDateTime)
where TPoco : MyAbstractClass
我在GetMethods()中找不到这个功能。
根据这篇SO帖子(GetMethod for generic method),我尝试了这些绑定标志:
GetType().GetMethods(BindingFlags.Public
| BindingFlags.NonPublic
| BindingFlags.Instance
| BindingFlags.Static
| BindingFlags.FlattenHierarchy
)
这会在类中找到14个其他方法,但不会发现这个方法。它 找到这个方法:
protected void Bar<TContext, TPoco>(List<TPoco> pocosToPersist, TContext context)
where TContext : IContext, new()
where TPoco : MyAbstractClass
所以唯一的区别是访问级别 - 但后来我可以看到其他私有函数。
即使我将绑定标志更改为更简单的(根据我的理解,不应该使新的项目可见):
GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance )
我仍然没有看到这个功能。
答案 0 :(得分:1)
正如帖子上的评论指出的那样,代码应该有效。问题是我定义函数的类是抽象的,所以我无法找到私有函数。
如果我执行this.GetType().BaseType.GetMethods( BindingFlags.NonPublic | BindingFlags.Instance)
,则该功能会按预期显示。