The reason we don't keep looking through the type hierarchy is because we
should have generated code which does the dispatch to the base method - that's
much more efficient then searching at doing a dynamic invoke at runtime. We
generate the code in NewTypeMaker.EmitBaseClassCallCheckForProper
While looking a little bit into [1] I found that the two methods above in
UserTypeOps.cs stop when they get to .NET types. If I remove the condition
to stop at .NET types, the issue no longer appears. Is there a reason that
these two methods are not looking at .NET types?
Thanks,
slide
[1] htt