<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="&#1;" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@MS Gothic";
        panose-1:2 11 6 9 7 2 5 8 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
-->
</style><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">Calling TryGetMember is actually the correct thing to do.&nbsp; Different languages have different semantics for when you do “a.Foo();”&nbsp; Some languages turn this
 into an InvokeMember while other languages separate this out into a get and invoke.&nbsp; In Python we separate this out into a get and invoke but you could also get this behavior in C# by doing:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">dynamic x = a.Foo;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">x();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">Which should also work.&nbsp; So you really need to support both GetMember and InvokeMember. &nbsp;The result of the GetMember is usually something which binds the
 instance to the member and then when it does whatever InvokeMember would have done.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D">I believe the part about updating to the latest assemblies in the thread was about using the assemblies compiled for .NET 4.0 instead of the assemblies compiled
 for .NET 2.0 SP1&#43; which don’t work w/ dynamic in .NET 4.0.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
color:#1F497D"><o:p>&nbsp;</o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> users-bounces@lists.ironpython.com [mailto:users-bounces@lists.ironpython.com]
<b>On Behalf Of </b>Marcus Carvalho<br>
<b>Sent:</b> Tuesday, June 22, 2010 10:55 AM<br>
<b>To:</b> users@lists.ironpython.com<br>
<b>Subject:</b> [IronPython] TryGetMember is called for methods instead of TryInvokeMember<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<p class="MsoNormal">I have an application that passes a DynamicObject to an IronPython script. The class works perfectly in C# but when a method is invoked inside a IronPython script the TryGetMember is called instead of TryInvokeMember and if I try to return
 a value through TryGetMember I get an exception saying that the member is not callable.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I found a user with similar problem (<a href="http://social.msdn.microsoft.com/Forums/en/dlr/thread/0556e593-2360-43b8-97e5-201c3c3ce1c5">http://social.msdn.microsoft.com/Forums/en/dlr/thread/0556e593-2360-43b8-97e5-201c3c3ce1c5</a>). He
 said that dowloading the latest release solved the problem. I have downloaded the latest source code release (70538), compiled it to .NET 4.0, but I still having the issue.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Here is a slightly modified code I get from the post, that does not work for me:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">&nbsp;<o:p></o:p></p>
</div>
<div>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">System;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">System.Collections.Generic;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">System.Linq;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">System.Text;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">IronPython.Hosting;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">IronPython.Runtime;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">Microsoft.Scripting;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">Microsoft.Scripting.Hosting;<span style="color:blue">
<o:p></o:p></span></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">using<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">System.Dynamic;
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas;color:blue">namespace<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas">TestDynamicInvokeFromPython
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">class</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:#2B91AF">Program</span> <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">static</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">void</span> Main(<span style="color:blue">string</span>[] args)
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">dynamic</span><span style="font-size:10.0pt;font-family:Consolas"> myDynamicObject =
<span style="color:blue">new</span> <span style="color:#2B91AF">MyDynamicObject</span>();
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:green">//first tey calling this object from C#, it should call Foo() and they try to call MissingMethod();</span><span style="font-size:10.0pt;
font-family:Consolas">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;C# Test...&quot;</span>);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">try</span><span style="font-size:10.0pt;font-family:Consolas">
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">myDynamicObject.Foo();<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">System.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;Method Result: &quot;</span> &#43; myDynamicObject.MissingMethod());
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">catch</span><span style="font-size:10.0pt;font-family:Consolas"> (<span style="color:#2B91AF">Exception</span> ex)
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;Got C# exception: &quot;</span> &#43; ex.Message);
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">ScriptEngine</span><span style="font-size:10.0pt;font-family:
Consolas"> pythonEngine =
<span style="color:#2B91AF">Python</span>.CreateEngine(); <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">ScriptScope</span><span style="font-size:10.0pt;font-family:
Consolas"> scriptScope = pythonEngine.CreateScope();
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">string</span><span style="font-size:10.0pt;font-family:Consolas"> pythonScript = SetPythonScript();
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">ScriptSource</span><span style="font-size:10.0pt;font-family:
Consolas"> script = pythonEngine.CreateScriptSourceFromString(pythonScript,
<span style="color:#2B91AF">SourceCodeKind</span>.Statements); <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">scriptScope.SetVariable(<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">&quot;myDynamicObject&quot;</span><span style="font-size:10.0pt;
font-family:Consolas">, myDynamicObject);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:green">//Now do the same thing from python, I expect to get the same behaviour as from C# (but I don't)</span><span style="font-size:10.0pt;
font-family:Consolas">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;\r\nScript Test...&quot;</span>);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">try</span><span style="font-size:10.0pt;font-family:Consolas">
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">script.Execute(scriptScope);<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">catch</span><span style="font-size:10.0pt;font-family:Consolas"> (<span style="color:#2B91AF">Exception</span> ex)
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;Got script exception: &quot;</span> &#43; ex.Message);
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.ReadKey();
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">static</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">string</span> SetPythonScript() <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">string</span><span style="font-size:10.0pt;font-family:Consolas"> s =
<span style="color:#A31515">&quot;&quot;</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s &#43;= <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">&quot;import clr&quot;</span><span style="font-size:10.0pt;
font-family:Consolas"> &#43;
<span style="color:#A31515">&quot;\r\n&quot;</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s &#43;= <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">&quot;clr.AddReference('mscorlib')&quot;</span><span style="font-size:10.0pt;font-family:Consolas"> &#43;
<span style="color:#A31515">&quot;\r\n&quot;</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s &#43;= <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">&quot;myDynamicObject.Foo();&quot;</span><span style="font-size:
10.0pt;font-family:Consolas"> &#43;
<span style="color:#A31515">&quot;\r\n&quot;</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s &#43;= <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">&quot;myDynamicObject.MissingMethod();&quot;</span><span style="font-size:10.0pt;font-family:Consolas"> &#43;
<span style="color:#A31515">&quot;\r\n&quot;</span>; <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">return</span><span style="font-size:10.0pt;font-family:Consolas"> s;
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">public</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">class</span> <span style="color:#2B91AF">MyDynamicObject</span> :
<span style="color:#2B91AF">DynamicObject</span> <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">public</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">void</span> Foo() <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;Foo() Called&quot;</span>);
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">public</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">override</span> <span style="color:#2B91AF">DynamicMetaObject</span> GetMetaObject(System.Linq.Expressions.<span style="color:#2B91AF">Expression</span> parameter)
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;GetMetaObject() Called&quot;</span>);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">return</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">base</span>.GetMetaObject(parameter); <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">public</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">override</span> <span style="color:blue">bool</span> TryInvokeMember(<span style="color:#2B91AF">InvokeMemberBinder</span> binder,
<span style="color:blue">object</span>[] args, <span style="color:blue">out</span>
<span style="color:blue">object</span> result) <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">if</span><span style="font-size:10.0pt;font-family:Consolas"> (binder.Name ==
<span style="color:#A31515">&quot;MissingMethod&quot;</span>) <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">result = <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">&quot;Method Found&quot;</span><span style="font-size:10.0pt;
font-family:Consolas">;
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">return</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">true</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">else</span><span style="font-size:10.0pt;font-family:Consolas">
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">result = <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">null</span><span style="font-size:10.0pt;font-family:Consolas">;
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">return</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">false</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">public</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">override</span> <span style="color:blue">bool</span> TryGetMember(<span style="color:#2B91AF">GetMemberBinder</span> binder,
<span style="color:blue">out</span> <span style="color:blue">object</span> result)
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#2B91AF">Console</span><span style="font-size:10.0pt;font-family:Consolas">.WriteLine(<span style="color:#A31515">&quot;TryGetMember() Called&quot;</span>);
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:blue">return</span><span style="font-size:10.0pt;font-family:Consolas">
<span style="color:blue">base</span>.TryGetMember(binder, <span style="color:blue">
out</span> result); <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:green">//#region AllOtherOverridees</span><span style="font-size:10.0pt;
font-family:Consolas">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:green">// ...</span><span style="font-size:10.0pt;font-family:Consolas">
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:green">//#endregion //AllOtherOverridees</span><span style="font-size:
10.0pt;font-family:Consolas">
<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">}<o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">Marcus Carvalho</span><span style="font-size:10.0pt;font-family:&quot;MS Gothic&quot;"> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
</div>
</div>
</div>
</body>
</html>