<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&nbsp; dispatch to the base method - that's much more efficient then searching at doing a dynamic invoke at runtime.&nbsp; 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">&nbsp;</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.&nbsp; The class slot dispatches to the base virtual method correctly, but we see the interface method as abstract and emit
code to throw.&nbsp; 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">&nbsp;</font></div>
<div><font face="Tahoma" size="2"><span style="font-size:10pt;"><b>From:</b> ironpython-users-bounces&#43;dinov=exchange.microsoft.com@python.org [<a href="mailto:ironpython-users-bounces&#43;dinov=exchange.microsoft.com@python.org">mailto:ironpython-users-bounces&#43;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;">&nbsp;</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;">&nbsp;</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">&nbsp;</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;">&nbsp;</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;">&nbsp;</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">[1]&nbsp; <a href="http://ironpython.codeplex.com/workitem/32166"><font color="blue"><u>http://ironpython.codeplex.com/workitem/32166</u></font></a>&nbsp;<br>

</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">&nbsp;</span></font></div>
<div><font face="Times New Roman" size="3"><span style="font-size:12pt;">-- <br>

Website:&nbsp;<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;">&nbsp;</span></font></div>
</span></font>
</body>
</html>