<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri" size="2"><span style="font-size:11pt;">
<div><font color="#1F497D">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.EmitBaseClassCallCheckForProperties which ultimately calls EmitBaseMethodDispatch which checks if we can do the base-method dispatch and emits the code which throws when the method is abstract.</font></div>
<div><font color="#1F497D"> </font></div>
<div><font color="#1F497D">I think what's probably happening is that we're overriding the interface slot and the class slot independently. The class slot dispatches to the base virtual method correctly, but we see the interface method as abstract and emit
code to throw. EmitBaseMethodDispatch probably just needs to do a Type.GetInterfaceMap on the base type and map it to the correct base method if the method is abstract and the method is declared on an interface type.</font></div>
<a name="_MailEndCompose"></a>
<div><font color="#1F497D"> </font></div>
<div><font face="Tahoma" size="2"><span style="font-size:10pt;"><b>From:</b> ironpython-users-bounces+dinov=exchange.microsoft.com@python.org [<a href="mailto:ironpython-users-bounces+dinov=exchange.microsoft.com@python.org">mailto:ironpython-users-bounces+dinov=exchange.microsoft.com@python.org</a>]
<b>On Behalf Of </b>Slide<br>
<b>Sent:</b> Wednesday, February 08, 2012 7:56 PM<br>
<b>To:</b> ironpython-users@python.org<br>
<b>Subject:</b> [Ironpython-users] TryGetNonInheritedValueHelper/TryGetNonInheritedMethodHelper</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">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?</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">Thanks,</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">slide</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">[1] <a href="http://ironpython.codeplex.com/workitem/32166"><font color="blue"><u>http://ironpython.codeplex.com/workitem/32166</u></font></a> <br>
</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">-- <br>
Website: <a href="http://earl-of-code.com"><font color="blue"><u>http://earl-of-code.com</u></font></a></span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;"> </span></font></div>
</span></font>
</body>
</html>