4

我正在尝试将 IronPython 中的 .NET RoutedUICommand 子类化。只要我不将任何参数传递给init函数,我就可以做到这一点。一旦我这样做,我就会得到一个 ArgumentTypeException Instance() 最多需要 5 个参数(给定 2 个)。我读过有一个 .overloads 字典,但我如何在init函数上使用它?这是我的代码:

class R(RoutedUICommand):
def __init__(self, win,*args, **kwargs):
    super(R, self).__init__(*args, **kwargs)
    self.win = win

    self.keyGesture = KeyGesture(Key.X,ModifierKeys.Control)
    self.Exit = RoutedUICommand('E_xit','Exit',clr.GetClrType(RoutedUICommand),InputGestureCollection([self.keyGesture]))
    self.ebinding = CommandBinding(self.Exit,self.ExitExecute,self.ExitCanExecute)
    self.win.CommandBindings.Add(self.ebinding)

r = R(win)

RoutedUICommand 具有三个重载。如何使用 .overloads 将我自己的参数添加到我的类中?

如果我尝试实现功能:

def __new__(self,win):
    return super(R,self).__new__(self)

我收到 MissingMemberException:对象没有属性“ExitExecute”

有没有人可以遵循一些想法?

编辑:

我发现了如何做到这一点:

def __new__(self,win,*args,**kwargs):
    return super(R,self).__new__(self,*args,**kwargs)

成功了。

4

0 回答 0