Using Python Functions from CSharp

From IronPython Cookbook

The following example (adapted from code posted to the IronPython Mailing list by Dino Viehland), creates a Python function from code. That function is then used from C#.

It uses the IronPython 2 hosting API.

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

namespace IP2Hosting
    class Program
        static void Main()
            PythonEngine pe = PythonEngine.CurrentEngine;
            string code = "lambda x, y: x > y";
            Function<object, object, bool> func = pe.EvaluateAs<Function<object, object, bool>>(code);

            // Writes False to the console
            bool result = func(2, 3);

            // Writes True to the console
            result = func(3, 2);

You can also do the same thing from within IronPython. As you can only have one IronPython engine active at a time with IronPython 2, this isn't directly useful - *but* it does allow you to experiment with the API from the interactive interpreter which can be very useful.

import clr

from IronPython.Hosting import PythonEngine
from Microsoft.Scripting.Utils import Function

pe = PythonEngine.CurrentEngine
f = pe.EvaluateAs[Function[object, object, bool]]('lambda x, y: x > y')

f(2, 3)
f(3, 2)

Back to Contents.