[IronPython] FW: FW: FW: returning inherited classes to .NET

Curt Hagenlocher curt at hagenlocher.org
Fri Feb 22 06:02:26 PST 2008


Ah, no.  I was thinking that you would modify your VB code to launch it as a
console app (for instance) rather than from inside of ASP.NET -- and see if
you still get the same error.

On Thu, Feb 21, 2008 at 10:07 PM, Howland-Rose, Kyle <
Kyle.Howland-Rose at aar.com.au> wrote:

>  Thanks for your help so late Curt (not that I need a quick answer at
> all).
>
> I am sure I am missing something big-time here and "talking" as
> cross-purposes, but, to my mind the reason I don't have a problem when
> running from the command line is because all I am doing is running the
> ipy.exe on the file which loads some assemblies, creates a class
> definition and a function definition and then terminates without even
> instantiating the class.  Is this what you mean by "running it directly"?
>
>
> Thanks again,
> Kyle
>
>  ------------------------------
>  *From:* users-bounces at lists.ironpython.com [mailto:
> users-bounces at lists.ironpython.com] *On Behalf Of *Curt Hagenlocher
> *Sent:* Friday, 22 February 2008 4:55 PM
> *To:* Discussion of IronPython
> *Subject:* Re: [IronPython] FW: FW: returning inherited classes to .NET
>
>   If you're only getting the error under ASP.NET <http://asp.net/>, then
> it's highly likely that you're loading multiple copies of the same assembly,
> which is why the CLR can't cast your Python class back to the VB base -- it
> literally considers them to be two different classes.  This may be related
> to the way ASP.NET <http://asp.net/> makes shadow copies of your files,
> but there could be other reasons as well (none of which, unfortunately, come
> to mind right now).
>
> Using an interface instead of a base class would give you the same
> results.
> On Thu, Feb 21, 2008 at 9:44 PM, Howland-Rose, Kyle <
> Kyle.Howland-Rose at aar.com.au> wrote:
>
> >  It runs fine from the command line but then it does not do much ...
> > yet.  For the moment I am simplifying it by removing IP :(
> >
> > I wanted to so some moderately heavy reflection which to my thinking
> > should be easier from IP but I will use VB for now.
> >
> > I assume I *should* be able to return a derived python class to VB?
> > Alternatively I could implement an interface.  How can IP implement a .NET
> > interface?
> > (All pointers to pre-existing doco warmly received :)
> >
> > Thanks
> > Kyle
> >
> >  ------------------------------
> >  *From:* users-bounces at lists.ironpython.com [mailto:
> > users-bounces at lists.ironpython.com] *On Behalf Of *Curt Hagenlocher
> > *Sent:* Friday, 22 February 2008 4:29 PM
> > *To:* Discussion of IronPython
> > *Subject:* Re: [IronPython] FW: returning inherited classes to .NET
> >
> >   My apologies; I wasn't reading the code correctly.  That's probably a
> > sign that I should be going to bed. :)  Have you tried simplifying your
> > version just a little bit by running it directly rather than through
> > ASP.NET <http://asp.net/>?
> >
> >
> > On Thu, Feb 21, 2008 at 8:43 PM, Howland-Rose, Kyle <
> > Kyle.Howland-Rose at aar.com.au> wrote:
> >
> > > Hi Curt,
> > >
> > > Thanks for replying.  When I view the link I see the following:
> > >
> > > The .NET code creates the "Test" class and then runs the python code
> > > which imports the "Test" class a subclasses it to create python class
> > > "X".
> > >
> > > Class "X" is then called and cast to type "Test" and assigned to the
> > > value obj.
> > >
> > > Is this what you are looking at?
> > >
> > > My code is pretty much identical.  The VB looks like:
> > >
> > >
> > > Public MustInherit Class ChildControl
> > >    Public Function Control() As WebControl
> > >        Return Nothing
> > >    End Function
> > >    Public Function GetValue() As String
> > >        Return Nothing
> > >    End Function
> > >    Public Function SetValue(ByVal value As Object) As String
> > >        Return Nothing
> > >    End Function
> > > End Class
> > >
> > > Class IPReflection
> > >    Private Shared Instance As IPReflection = Nothing
> > >    Private PyEngine As PythonEngine
> > >    Private PyModule As EngineModule
> > >
> > >    Public Shared Function Inst() As IPReflection
> > >        If Instance Is Nothing Then
> > >            Instance = New IPReflection
> > >        End If
> > >        Return Instance
> > >    End Function
> > >
> > >    Private Sub New()
> > >        Dim path As String = HttpContext.Current.Request.MapPath(".")
> > >        PyEngine = New PythonEngine
> > >        PyEngine.AddToPath(path)
> > >        PyModule = PyEngine.CreateModule
> > >        PyEngine.DefaultModule = PyModule
> > >
> > > PyEngine.ExecuteFile(HttpContext.Current.Request.MapPath
> > > ("CustomControls
> > > .py"))
> > >    End Sub
> > >
> > >    Public Function GetChildControl() As ChildControl
> > >        Return
> > > CType(Operations.Ops.Call(PyModule.Globals("GetControl")),
> > > ChildControl)
> > >    End Function
> > > End Class
> > >
> > > And the python looks like:
> > >
> > > import clr
> > > import sys
> > >
> > > clr.AddReference('System')
> > > import System
> > >
> > > sys.path.append(sys.path[0] + "/bin")
> > >
> > > clr.AddReferenceToFile("WebControlLibrary.dll")
> > > clr.AddReference('System.Web')
> > >
> > > from System.Web.UI.WebControls import Label
> > >
> > > from WebControlLibrary import ChildControl
> > >
> > > class LabelChildControl(ChildControl):
> > >        def __init__(self):
> > >                self.control = Label()
> > >        def Control(self):
> > >                return self.control
> > >
> > > def GetControl():
> > >        return LabelChildControl()
> > >
> > >
> > > Thanks again,
> > > Kyle
> > >
> > > ________________________________
> > >
> > > From: users-bounces at lists.ironpython.com
> > > [mailto:users-bounces at lists.ironpython.com] On Behalf Of Curt
> > > Hagenlocher
> > > Sent: Friday, 22 February 2008 3:08 PM
> > > To: Discussion of IronPython
> > > Subject: Re: [IronPython] returning inherited classes to .NET
> > >
> > >
> > > The page in question doesn't seem to show what you describe --
> > > deriving
> > > a Python class from a C# class.  Maybe you could show us your sample
> > > code?
> > >
> > >
> > > On Thu, Feb 21, 2008 at 7:39 PM, Howland-Rose, Kyle
> > > <Kyle.Howland-Rose at aar.com.au> wrote:
> > >
> > >
> > >        Hi all,
> > >        I am following
> > >
> > >
> > > http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET
> > > <http://www.ironpython.info/index.php/Using_Python_Classes_from_.NET>
> > > but using VB.
> > >
> > >        In VB I declare a class and derive a python 1.1 class from it
> > > but when I return it I get the exception:
> > >
> > >        "Unable to cast object of type
> > > 'IronPython.NewTypes.WebControlLibrary.ChildControl_1' to type
> > > 'WebControlLibrary.ChildControl'."
> > >
> > >        The page referenced above just seems to cast the python class
> > > instance to the C# class instance but this does not work for me in VB.
> > >
> > >        Any help would be appreciated :)
> > >
> > >        Thanks,
> > >
> > >        Kyle
> > >
> > >
> > >
> > >
> > >
> > > ************************************************************************
> > >
> > >        Allens Arthur Robinson online: http://www.aar.com.au
> > > <http://www.aar.com.au/>
> > >
> > >        This email is confidential and may be subject to legal or other
> > > professional privilege. It is also subject to copyright. If you have
> > > received it in error, confidentiality and privilege are not waived and
> > > you must not disclose or use the information in it. Please notify the
> > > sender by return email and delete it from your system. Any personal
> > > information in this email must be handled in accordance with the
> > > Privacy
> > > Act 1988 (Cth).
> > >
> > >
> > >
> > > ************************************************************************
> > > *
> > >
> > >
> > >
> > >
> > >
> > > ************************************************************************
> > >
> > >        Allens Arthur Robinson online: http://www.aar.com.au
> > > <http://www.aar.com.au/>
> > >
> > >        This email is confidential and may be subject to legal or other
> > > professional privilege. It is also subject to copyright. If you have
> > > received it in error, confidentiality and privilege are not waived and
> > > you must not disclose or use the information in it. Please notify the
> > > sender by return email and delete it from your system. Any personal
> > > information in this email must be handled in accordance with the
> > > Privacy
> > > Act 1988 (Cth).
> > >
> > >
> > >
> > > ************************************************************************
> > > *
> > >
> > >
> > >        _______________________________________________
> > >        Users mailing list
> > >        Users at lists.ironpython.com
> > >        http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> > >
> > >        _______________________________________________
> > >        Users mailing list
> > >        Users at lists.ironpython.com
> > >        http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> > >
> > >
> > >
> > >
> > >
> > >
> > > ************************************************************************
> > >
> > > Allens Arthur Robinson online: http://www.aar.com.au
> > >
> > > This email is confidential and may be subject to legal or other
> > > professional privilege. It is also subject to copyright. If you have
> > > received it in error, confidentiality and privilege are not waived and you
> > > must not disclose or use the information in it. Please notify the sender by
> > > return email and delete it from your system. Any personal information in
> > > this email must be handled in accordance with the Privacy Act 1988 (Cth).
> > >
> > >
> > > *************************************************************************
> > >
> > > _______________________________________________
> > > Users mailing list
> > > Users at lists.ironpython.com
> > > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> > >
> > > _______________________________________________
> > > Users mailing list
> > > Users at lists.ironpython.com
> > > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> > >
> > >
> >
> >
> > ************************************************************************
> >
> > Allens Arthur Robinson online: http://www.aar.com.au
> >
> > This email is confidential and may be subject to legal or other
> > professional privilege. It is also subject to copyright. If you have
> > received it in error, confidentiality and privilege are not waived and you
> > must not disclose or use the information in it. Please notify the sender by
> > return email and delete it from your system. Any personal information in
> > this email must be handled in accordance with the Privacy Act 1988 (Cth).
> >
> >
> > *************************************************************************
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.ironpython.com
> > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> >
> >
>
>
> ************************************************************************
>
> Allens Arthur Robinson online: http://www.aar.com.au
>
> This email is confidential and may be subject to legal or other
> professional privilege. It is also subject to copyright. If you have
> received it in error, confidentiality and privilege are not waived and you
> must not disclose or use the information in it. Please notify the sender by
> return email and delete it from your system. Any personal information in
> this email must be handled in accordance with the Privacy Act 1988 (Cth).
>
> *************************************************************************
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20080222/b230b1e3/attachment.htm 


More information about the Users mailing list