Stanislas Pinte a écrit :
> Shri Borde a écrit :
>> Could you use mark the types as internal and public depending on whether you
>> wanted to prevent or allow access from IronPython? IronPython code will not
>> be able to access types or methods marked as internal in your C# code.
Hello,
the following code demonstrates that importing internal types in own
Assembly works, while it shouldn't (according to what we think).
Any ideas?
Kind regards,
Stan.
namespace Test
{
[TestFixture]
public class EngineIntegrationTests
{
[Test]
public void TestPublicVsInternalImports()
{
PythonEngine engine = new PythonEngine();
//import self assembly
//try to import public type. should pass
//try to import internal type. should fail
engine.LoadAssembly(this.GetType().Assembly);
engine.Execute("from testnamespace.test import Foo");
engine.Execute("foo = Foo()");
engine.Execute("from testnamespace.test import Bar");
engine.Execute("bar = Bar()");
}
}
}
namespace testnamespace.test
{
public class Foo
{
//
}
internal class Bar
{
//
}
}
>
> Is this true? Because that is exactly what I want...I can then
> give the reference of my own assembly to the python engine, and
> then the user will only be able to use public types!!
>
> Great,
>
> thanks.
>
> Stan.
>
>> -----Original Message-----
>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dino Viehland
>> Sent: Tuesday, August 15, 2006 8:09 AM
>> To: Discussion of IronPython
>> Subject: Re: [IronPython] expose some namespaces of own application
>>
>> It is currently an all-or-nothing situation. As a work around you could
>> create your own module (import imp.new_module('modulename')) and then you
>> could add the namespaces onto the new module, then publish the module in
>> sysmodules:
>>
>> import imp
>> import sys
>>
>> mod = imp.new_module('test')
>> mod.abc = 'xyz'
>> sys.modules['test'] = mod
>>
>> import test
>> print test.abc
>>
>> You can do this w/o giving IronPython the reference to your assembly. Just
>> load the assembly, and from Python you can access the namespaces/types
>> directly off the assembly object.
>>
>> -----Original Message-----
>> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Stanislas
>> Pinte
>> Sent: Tuesday, August 15, 2006 12:34 AM
>> To: Discussion of IronPython
>> Subject: [IronPython] expose some namespaces of own application
>>
>> Hello,
>>
>> We are using IP as a scripting engine, embedded in one of our products.
>>
>> I would like to be able to expose a subset of the namespaces present in my
>> application assembly (MyApp.exe) to the scripting engine...but hide the rest:
>>
>> i.e. when a user does an "from a.b.c import Bar", if a.b.c is "hidden", then
>> it fails:
>>
>>>>> from a.b.c import Bar
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in ?
>> ImportError: No module named a.b.c
>>
>> whereas if a.b.pub has been "exposed" to the scripting engine, then the user
>> can import it.
>>
>> Is this currently possible? I have the impression that it is an
>> all-or-nothing situation...and I would like to avoid having to split my
>> classes in several assemblies.
>>
>> Thanks for all input,
>>
>> Kind regards,
>>
>> Stan.
>>
>> --
>> -----------------------------------------------------------------
>> Stanislas Pinte e-mail: [EMAIL PROTECTED]
>> ERTMS Solutions http://www.ertmssolutions.com
>> Rue de l'Autonomie, 1 Tel: + 322 - 522.06.63
>> 1070 Bruxelles Fax: + 322 - 522.09.30
>> -----------------------------------------------------------------
>> Skype (http://www.skype.com) id: stanpinte
>> -----------------------------------------------------------------
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>>
>
>
--
-----------------------------------------------------------------
Stanislas Pinte e-mail: [EMAIL PROTECTED]
ERTMS Solutions http://www.ertmssolutions.com
Rue de l'Autonomie, 1 Tel: + 322 - 522.06.63
1070 Bruxelles Fax: + 322 - 522.09.30
-----------------------------------------------------------------
Skype (http://www.skype.com) id: stanpinte
-----------------------------------------------------------------
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com