Acumatica - 需要对象引用或非静态字段、方法或 属性

Acumatica - An object Reference is Required or the non-static field, method, or property

嗨,有人遇到过这个错误吗?每次我在 foreach 循环上使用 PXSelect 时,在另一个源代码上使用 PXSelect 而在我的代码上没有,任何人都可以找出原因吗?下面的代码也是 Acumatica 的原始源代码,但我只将 Datamember 从 PaymentCharges 更改为 OtherCharges

    [PXOverride]
    public void VoidCheckProc(ARPayment doc)
    {
        foreach (PXResult<ARPaymentChargeTran> paycharge in PXSelect<ARPaymentChargeTran, Where<ARPaymentChargeTran.docType, Equal<Required<ARPayment.docType>>, And<ARPaymentChargeTran.refNbr, Equal<Required<ARPayment.refNbr>>>>>.
            Select(this, doc.DocType, doc.RefNbr))
        {
            ARPaymentChargeTran charge = PXCache<ARPaymentChargeTran>.CreateCopy((ARPaymentChargeTran)paycharge);
            charge.DocType = Document.Current.DocType;
            charge.CuryTranAmt = -1 * charge.CuryTranAmt;
            charge.Released = false;
            charge.CuryInfoID = Document.Current.CuryInfoID;
            charge.CashTranID = null;
            //PaymentCharges.Insert(charge);
            OtherCharges.Insert(charge);
        }
    }

Select 方法是非静态的,如错误消息所述,但您在 PXSelect<...> 类型上调用它。您需要有一个该类型的实例。

根据 Hybridzz 的回答,我假设您使用了错误的 Select 方法重载。可能你的参数没有正确的类型,所以编译器选择最合适的方法重载。在本例中,它选择仅接受非静态参数 params object[] o 的参数。您使用的 API 设计有点误导。

我相信,您是在基本 BLC 的扩展中编写此方法

所以不要使用“this”,而是使用“this.Base