See the section on "Overriding methods" in 
http://ironpython.codeplex.com/SourceControl/changeset/view/60398#1011839 
(IronPython_Main\Doc\dotnet-integration.rst) for more details on overriding, 
like dealing with ref params. We are working on making the info easily 
accessible, but for now, you can browse the content from the rst file.

From: [email protected] 
[mailto:[email protected]] On Behalf Of Brian Curtin
Sent: Friday, October 23, 2009 11:53 AM
To: Discussion of IronPython
Subject: Re: [IronPython] Overriding .NET methods within IronPython

I'm not sure what I was doing wrong when this clearly simpler way wasn't 
working, but this pretty much answers my question: do this - Form.OnLoad(self, 
evt_args)

Sorry for the noise.
On Fri, Oct 23, 2009 at 13:45, Brian Curtin 
<[email protected]<mailto:[email protected]>> wrote:
Hey list,

I think I got this right, and it seems to work, but I just feel like there is 
probably a better way to override a method in IP. Some time spent googling 
doesn't bring anything up except for IP/C# code examples containing the 
override keyword. For example, I want to override the Form class' OnLoad 
method, so I wrote a decorator to do so.

class frm(Form):
    def __init__(self):
            Form.__init__(self)

    def override(method):
        def inner(*args):
            base = super(Form, args[0]) #args[0] is frm instance
            base_method = getattr(base.__thisclass__, method.__name__)
            method(*args) #call our method first
            return base_method(*args)
        return inner

    @override
    def OnLoad(self, evt_args):
            print evt_args

It doesn't do anything snazzy - just prints out the EventArgs, then calls the 
base class Form.OnLoad.

Any thoughts?

Brian

_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to