D365FO中的命令链(方法换行)导致'对象未设置为对象的实例'

Ain*_*eyJ 3 x++ axapta dynamics-ax7 dynamics-365-operations

我试图通过扩展CustTable在D365FO中使用新的"命令链"功能.

在将其记录到新表中之前,我们需要检查更新方法上的值是否已更改.

[ExtensionOf(tableStr(CustTable))]
final class CustTable_Extension
{
    void update(boolean _updateSmmBusRelTable = true, boolean _updateParty = 
                true)
    {
        CustTable   custTable_Orig = this.orig();
        boolean hasChanged = this.CreditMax != custTable_Orig.CreditMax;

        next update(_updateSmmBusRelTable, _updateParty);

        if(hasChanged)
        {
            //do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在运行此代码时,我们得到"对象未设置为对象的实例"错误.发生错误是因为'this'对象为null.调用"next update(_updateSmmBusRelTable,_updateParty);"时也会出现同样的错误.

文件指出:"这让扩大的公共和保护的方法逻辑,而无需使用事件处理程序当您缠绕的方法,您还可以访问其他公共和保护的方法和类的变量."

有任何想法吗?

Mat*_*tej 5

您必须(重新)编译包CustTable- Application Suite使用PU9或更新版本.

请参阅https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/get-started/whats-new-platform-update-9#supported-versions:

但是,此功能要求在平台更新9上编译要扩充的类.由于当前版本的Dynamics 365 for Finance和Operations,Enterprise editon应用程序已在Platform update 8或更早版本上编译,因此您需要重新编译基础平台更新9或更新版本上的软件包(如Application Suite),以便包装该软件包中定义的方法