[IronPython] CustomSymbolDictionary question

R. Bear Smith rbear at rbear.net
Mon Mar 2 21:38:30 CET 2009


What I am trying to do is run a user script over and over.  Each time it
runs there will be different data in the object model that they access to
compute there values and such.  The trick is they need to be able to access
values from prior runs.  So the way I have addressed this is they create a
c# class called DataSeries, I maintain state on it behind the scenes as to
what run they are on, then they can use an indexer on it to get prior
values. so

 

x = DataSeries()

 

do some calculations

x.set(somevalue)

 

// then on the next run of the script they can

y = x[1]   // which gives them access to the value of x from the prior scope
run.

 

accessing prior values is required for what the user is doing and while
there are many ways to code it, keeping it very simple for the users is a
priority.  Hope that helps

 

From: users-bounces at lists.ironpython.com
[mailto:users-bounces at lists.ironpython.com] On Behalf Of Jimmy Schementi
Sent: Monday, March 02, 2009 3:10 PM
To: Discussion of IronPython
Subject: Re: [IronPython] CustomSymbolDictionary question

 

So, if I understand this right, you have user code, which you need to run
each time first ... and then your code which you want to run once after.
Something like:

 

// when your app starts, or something, compile your code, but don't run yet

var compiledCode = engine.CreateScriptSourceFromString(code).Compile();

 

// do other stuff ....

 

// execute user code

var userScope = engine.ExecuteFile("usercode.py");

 

// run your code in the user's code's scope

compiledCode.Execute(userScope);

 

From: users-bounces at lists.ironpython.com
[mailto:users-bounces at lists.ironpython.com] On Behalf Of R. Bear Smith
Sent: Monday, March 02, 2009 11:54 AM
To: users at lists.ironpython.com
Subject: [IronPython] CustomSymbolDictionary question

 

Hi all,

 

I have a situation where I need to run a script many times with a different
scope each time.  I want to be able to substitute an instance of a class
each time it is asked for.   For example,

 

x = MyCSharpClass()

 

Using CustomSymbolDictionary I am able to store the class created on the
first call and then substitute it for every additional call to x from
different scopes.  While this works to provide the same class instance to
every scope, a new class is being created on every call and replaced with
the original class.  Is there a way to only create the class once.  The
script will be user code so I have no prior knowledge of variable names and
such.  Any ideas would be appreciated.

 

Thanks

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20090302/1c613dd8/attachment.html>


More information about the Ironpython-users mailing list