2016-11-10 96 views
1

我想用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; 
} 

我现在的问题是...

我已经认识到超()这种新的方法并采取一切有了它,从它从motherclass“A”扩展的方法。

但是我该如何添加更多东西到方法中,以便它能够让我从之前的方法中获得的东西以及我在重写方法中添加的东西?

+0

您能否显示'A.getTable'的内容? –

回答

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; 
} 

我不知道为什么这样的事情会有用,但是这是一个样本的方式聚合功能,而不是完全覆盖它。

0

如果你想添加额外critria到选择你应该使用查询对象和设计你的选择。比你应该在你的基类上创建一个叫做modifieQuery()或setQueryRange()的新方法。在这种方法中,您可以根据需要为基类添加范围。当你在你的类“B”中重写这个方法时,你可以调用super并添加额外的范围,或者直接覆盖没有super()的方法,并根据需要设置范围。在基类的getTable方法中,调用modifieQuery()并执行它。