Hi, Buckle,
I’m trying to do some guesswork, as I could not find a clear question in the 
first part.
I guess you’re using a “hosted” environment, where the IronPython interpreter 
is hosted in a C# / .NET application.
There’s the method DynamicHelpers.GetPythonTypeFromType(Type dotNetType) which 
creates a python class object for a .NET type.
We successfully used this to provide types (including enums) to IronPython 
scripts. You can either inject them directly into the script scope, or create 
an artificial module using ScriptEngine.CreateModule(string name) and populate 
its namespace with mymodule.SetVariable(name, value), which the script can then 
“import”.
Best regards

Markus Schaber

CODESYS® a trademark of 3S-Smart Software Solutions GmbH

Inspiring Automation Solutions
________________________________
3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50

E-Mail: m.scha...@codesys.com<mailto:m.scha...@codesys.com> | Web: 
codesys.com<http://www.codesys.com> | CODESYS store: 
store.codesys.com<http://store.codesys.com>
CODESYS forum: forum.codesys.com<http://forum.codesys.com>

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade 
register: Kempten HRB 6186 | Tax ID No.: DE 167014915
________________________________
This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient (or have received
this e-mail in error) please notify the sender immediately and destroy this 
e-mail. Any unauthorised copying, disclosure
or distribution of the material in this e-mail is strictly forbidden.
From: Ironpython-users 
[mailto:ironpython-users-bounces+m.schaber=codesys....@python.org] On Behalf Of 
buckle2000
Sent: Tuesday, March 22, 2016 5:42 PM
To: ironpython-users
Subject: [Ironpython-users] How to bind a System.Type to a variable using 
scope.SetVariable?

Hello everyone!
I want to bind a class in C# (or a System.Type) to a variable in IronPython 
using scope.SetVariable.
For example,
import System
math = System.Math
math.Sin(1) # this works
type(math) # IronPython.Runtime.Types.PythonType
But, I do not want to use "import xxx" due to security problems.
I want the "math" class, in this example, can be use instantly.

When I tried to do something like this in C#:
scope.SetVariable("math",typeof(System.Math));
then in python code
type(math) # Also IronPython.Runtime.Types.PythonType
See the attached source file for detailed info.

Something may be useful:
see IronPython.Modules.Builtin, which is also a static class like System.Math.
seems like IronPython binded it with "__builtins__" in python successfully, but 
I don't know how.

Another question: is there an easy way to disable users from importing modules 
like clr without using Code Access?
Also, how to bind a namespace in C# code, to a ironpython object, using 
IronPython C# assembly (so the "binding" code must be written in C#(.NET) code)?


2016-03-19
________________________________
buckle2000
_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
https://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to