2016-11-10 97 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()並執行它。