views:

53

answers:

0

I tested IronPython on mono 2.8 with the code in the book Professional IronPython p.315 listing 15-3.

using System;
using IronPython.Hosting;
using IronPython.Runtime;
using Microsoft.Scripting.Hosting;

namespace Method2
{
    class Program
    {
        static void Main(string[] args)
        {
            // Obtain the runtime.
            var IPY = Python.CreateRuntime();

            // Create a dynamic object containing the script.
            dynamic TestPy = IPY.UseFile("TestClass.py");

            // Execute the __test__() method.
            TestPy.__test__();
        }
    }
}

I see it's compiled OK, and run without a problem on Windows 7, whereas the mono 2.8 gives me the following error message.

Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 
`Microsoft.Scripting.Hosting.ScriptScope' does not contain a definition for `__test__'
at (wrapper dynamic-method) object.CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,object) 
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid1
(System.Runtime.CompilerServices.CallSite,object) 
at Method2.Program.Main (string[]) 

I thought Mono 2.8 supports C# 4.0 which has the dynamic keyword, but I see that the 'dynamic' keyword is not fully supported with mono.

Is this a bug of Mono 2.8?