srplab Common Language Extension(CLE)
 

For c# calls python, Here presents a new method, which ues cle developed by srplab.

A function “Add” is defined in lua which returns the sum of two input integers, the function also call c# method “Show” to print the result.

There are three steps:

1.       Init cle, create service group, and create service.

2.       Create interface object, and defines a new function “Add” of it.

3.       Write function code of Add.

 

import starpy

--Step1 : Init cle, create service group, and create service

Service = starpy._InitSimple("AddFunctionService","123",0,0);

--Step2 : Create interface object, and define function Add

Obj=Service._New("TestClass");

--Step3 : Add function code

def Obj_Add(self,x,y) :

  --call back to script function

  self.Show(x+y);

  return x+y;

Obj.Add = Obj_Add;

 

For c# code calls the above python file, there are four steps;

1.       Init cle, create service group, import lua file, and create service.

2.       Define extends class of StarObjectClass, which implement callback function “Show”.

3.       Create Instance of object “TestClass” defined in lua file.

4.       Call function “Add”.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using star_csharp;

 

namespace csharp_call

{

class MyObjectClass : StarObjectClass{

//--Step2 : Define extends class of StarObjectClass and implements callback function “Show”.

       public void Show( StarObjectClass self,int para )

       {

         Console.WriteLine("print from java call back "+para);

         return;

       }

         public MyObjectClass(StarObjectClass srcobj):base(srcobj){

    }     

    }

    class Program

    {

        static void Main (string[] args)

        {

//--Step1 : Init cle, create service group,import python file, and create service

         StarCoreFactory starcore= StarCoreFactory.GetFactory();

         StarServiceClass Service=starcore._InitSimple("test","123",0,0," AddFunctionService.py?script=python");

         //--Step3 : Create Instance of object “TestClass” defined in python.

         MyObjectClass a = new MyObjectClass( Service._GetObject("TestClass")._New() );

         //--Step4 : call function “Add”.

        Console.WriteLine("Add returns : " + a._Call("Add", 12, 34));

        starcore._ModuleExit();

        }

    }

}

examples code download

Copywright (C) 2005 www.SRPLab.com(Star-River Platform Lab.) All Rights Reserved Email:support@srplab.com