<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="" 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:"Calibri","sans-serif";
color:#1F497D">Calling TryGetMember is actually the correct thing to do. Different languages have different semantics for when you do “a.Foo();” Some languages turn this
into an InvokeMember while other languages separate this out into a get and invoke. 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:"Calibri","sans-serif";
color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D">dynamic x = a.Foo;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D">x();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D">Which should also work. So you really need to support both GetMember and InvokeMember. 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:"Calibri","sans-serif";
color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";
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+ 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:"Calibri","sans-serif";
color:#1F497D"><o:p> </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:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> 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> </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"> <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"> <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"> <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:"MS Gothic""> </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:"MS Gothic""> </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:"MS Gothic""> </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">"C# Test..."</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">"Method Result: "</span> + 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">"Got C# exception: "</span> + 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:"MS Gothic""> </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">"myDynamicObject"</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">"\r\nScript Test..."</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">"Got script exception: "</span> + 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:"MS Gothic""> </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">""</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s += <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">"import clr"</span><span style="font-size:10.0pt;
font-family:Consolas"> +
<span style="color:#A31515">"\r\n"</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s += <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">"clr.AddReference('mscorlib')"</span><span style="font-size:10.0pt;font-family:Consolas"> +
<span style="color:#A31515">"\r\n"</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s += <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">"myDynamicObject.Foo();"</span><span style="font-size:
10.0pt;font-family:Consolas"> +
<span style="color:#A31515">"\r\n"</span>; <o:p></o:p></span></p>
<p><span style="font-size:10.0pt;font-family:Consolas">s += <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:Consolas;
color:#A31515">"myDynamicObject.MissingMethod();"</span><span style="font-size:10.0pt;font-family:Consolas"> +
<span style="color:#A31515">"\r\n"</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:"MS Gothic""> </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">"Foo() Called"</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">"GetMetaObject() Called"</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">"MissingMethod"</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">"Method Found"</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">"TryGetMember() Called"</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:"MS Gothic""> </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:"MS Gothic""> </span><span style="font-size:10.0pt;font-family:Consolas"><o:p></o:p></span></p>
</div>
</div>
</div>
</body>
</html>