Acumatica - 方法覆盖错误

Acumatica - Method Override Error

我试图覆盖现有的方法,但在我发布后出现此错误。

Attempt by method 'Wrapper.PX.Objects.AR.Cst_ARPaymentEntry.ARPayment_RowSelectedGeneratedWrapper(PX.Objects.AR.ARPaymentEntry, PX.Data.PXCache, PX.Data.PXRowSelectedEventArgs)' to access method 'PX.Objects.AR.ARPaymentEntry_Extension.ARPayment_RowSelected(PX.Data.PXCache, PX.Data.PXRowSelectedEventArgs)' failed.

当我尝试删除 PXOverride 属性时没有发生错误。我使用的是 5.10.072 版本。

   [PXOverride]
    protected void ARPayment_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
    {

    }

问题是您试图覆盖事件处理程序 - 而不是 BLC 的常见虚拟方法。要做到这一点,必须使用不同的方法。即,您需要在不使用 PXOverride 属性的情况下声明事件处理程序,但使用类型为 PXRowSelected 的附加参数,然后根据您的内部逻辑调用或不调用它。以下是此类声明的示例:

protected void ARPayment_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected invokeBaseHandler)
{
    /* your custom event handling logic here */

    if(/* your custom condition may go here */)
        invokeBaseHandler(cache, e);

    /* some more of your logic here if needed */
}

请注意,如果您只是希望您的处理程序与基本处理程序一起执行,则不需要额外的参数 - 只需使用您的代码声明处理程序,它将在原始处理程序之后被调用。

在任何情况下,您都可以在位于帮助 > 自定义 > 功能自定义示例 > 添加或更改 BLC 事件处理程序 下的帮助文章中找到关于此主题的更多信息和解释Acumatica 的。