当将smmOpportunityTable设置为common时,Dynamics ax 2012编译器警告

时间:2015-03-06 08:01:49

标签: axapta dynamics-ax-2012

一个类可以接收VendTable,CustTable或smmOpportunityTable记录。

对于一个实例,通常会收到CustTable记录,并且新的要求会使smmOpportunityTable发挥作用,因此我使用一条公共记录来捕获这段代码:

(代码中早些时候发生了一些其他事情来设置custTable记录)。

commonParty = custTable.RecId != 0 ? custTable : smmOpportunityTable;

问题是,上面的代码行给出了编译警告“操作数类型与运算符不兼容”。发生在smmOpportunityTable上。

我的问题,为什么我不能将smmOpportunityTable的实例设置为常见?当然它的基本类型常见吗?有任何想法如何解决警告?

我正在开发Dynamics Ax 2012 R1。

1 个答案:

答案 0 :(得分:1)

警告实际上只是因为编译器似乎错误地处理了三元运算符的使用。

要删除警告,您只需重写为:

if (custTable)
    commonParty = custTable;
else
    commonParty = smmOpportunityTable;

if (custTable)if (custTable.RecId != 0)相同。它只是检查是否填充了RecId字段。

我可能会对你在代码中尝试做的事情感到困惑,但对于赋值的另一面,约定通常如下:

switch (common.TableId)
{
    case tableNum(CustTable):
        custTable = common as CustTable;
        break;

    case tableNum(smmOpportunityTable):
        smmOpportunityTable = common as smmOpportunityTable;
        break;

    default:
        throw error(strFmt(Error::wrongUseOfFunction(funcName())));
}