使用超级方法

时间:2016-11-10 08:54:15

标签: axapta dynamics-ax-2012 x++

我想使用Dynamics AX2012中的Method super()进行编程。

我已经构建了一个类(“A”)和一些方法。我建立了另一个班级(“B”),从班级延伸出来 我的班级“A”有一些方法。 现在在类“B”中我想重写一个方法。我会这样做的。 我将覆盖Method getTable()。

protected SYCCarBrandTable getTable()
{
    SYCCarBrandTable ret;

    ret = super();
    {
        select brandid,branddescription from ret
        where ret.brandid == "Bentley";
    }

    return ret;
}

现在我的问题是......

我已经理解了使用super()这个新方法确实从它在母语“A”中扩展的方法中获取了所有内容。

但是我怎样才能在方法中添加更多东西,这样它就可以从之前的方法和我在overriden方法中添加的东西中获得东西?

2 个答案:

答案 0 :(得分:0)

查看getTable()的实现,看起来您可能希望使用super()返回的另一个SYCCarBrandTable的值作为条件+其他新添加的条件来选择一些SYCCarBrandTable记录。

我不确定你为什么要做这样的事情,但是如果你对同一个表变量执行select语句,你实际上真的会覆盖所有行为,而不是添加任何东西。

如果我做对了,你可能想要使用另一个SYCCarBrandTable:

protected SYCCarBrandTable getTable()
{
    SYCCarBrandTable superCar;
    SYCCarBrandTable ret;

    superCar = super();

    select brandid,branddescription from ret
        where ret.CriteriaA = superCar.CriteriaA
        && ret.brandid == "Bentley";

    return ret;
}

然后,我不确定为什么这样的事情有用,但这是聚合功能而不是完全覆盖它的一种示例方式。

答案 1 :(得分:0)

如果你想为一个选择添加额外的批评,你应该使用查询对象并设计你的选择。您应该在基类上创建一个名为modifieQuery()或setQueryRange()的新方法。在此方法中,您可以根据需要为基类添加范围。当你在班级中重写这个方法" B"你调用super而不是添加额外的范围或简单地覆盖没有super()的方法,只需根据需要设置范围。在基类的getTable方法中,调用modifieQuery()并执行它。