"fooclass" is not a Python type. It's an instance of the CLR class
System.RuntimeType. In order to derive from "foo" in this fashion, you might
be able to turn fooclass into a IronPython.Runtime.Types.PythonType by
saying

import clr
foo = clr.GetPythonType(fooclass)
class bar(foo):
    pass

If it's consistent with your security requirements, it would be simpler to
simply expose your C# assembly directly to IronPython. You would do this
from within the C# code by saying

scriptRuntime.LoadAssembly(typeof(foo).Assembly);

and then you could say from your Python code

from Namespace.Containing.Your.Foo.Class import foo

On Mon, Dec 28, 2009 at 4:36 AM, Marcel Heing-Becker <mars...@googlemail.com
> wrote:

> PLEASE IGNORE MY PREVIOUS POST with the same title, I accidentally sent it
> before I was finished cleaning up the code.
>
> Hi there,
> I have a problem with my application. It's written in C# and embeds
> IronPython. In C#, I have a class that looks like this:
>
> public class foo
> {
>     public foo()
>     {
>         ...
>     }
>     ...
> }
>
> I put this into the ScriptScope I use by doing:
>
> scope.SetVariable("fooclass", typeof(foo));
>
> Operations like: a = fooclass() work without any problem, but the following
> IronPython does not work and raises the error: Cannot create instances of
> RuntimeType because it has no public constructors. Code:
>
> class bar(fooclass):
>     def __init__(self):
>         Name = "Unused"
>     ...
>
> barobject = bar()
>
> Well, I can't really say what this is about. Is it a Bug in IP or anything
> like a limitation?
> Greetings, Marcel
>
> _______________________________________________
> Users mailing list
> Users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to