2016-11-10 11 views
1

Ich möchte mit der Methode super() in Dynamics AX2012 programmieren.Mit der Super-Methode

Ich habe eine Klasse ("A") und einige Methoden darin erstellt. Ich baue eine andere Klasse ("B"), die von der Klasse vorher reicht.
Meine Klasse "A" hat einige Methoden. Jetzt in Klasse "B" möchte ich eine Methode überschreiben. Ich werde es so machen. Ich überschreibe die Methode getTable().

protected SYCCarBrandTable getTable() 
{ 
    SYCCarBrandTable ret; 

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

    return ret; 
} 

Jetzt ist meine Frage ...

Ich habe verstanden, dass mit super() diese neue Methode alles nehmen hat mit ihm aus dem Verfahren, die sie von der motherclass „A“ Erweitert.

Aber wie kann ich der Methode mehr Dinge hinzufügen, so dass es mir die Dinge aus der Methode vor gibt und die Dinge, die ich in der überschriebenen Methode hinzugefügt habe?

+0

Können Sie den Inhalt von A.getTable anzeigen? –

Antwort

0

Wenn Sie die Implementierung von getTable() betrachten, möchten Sie vielleicht einen SYCCarBrandTable-Datensatz mit den Werten eines anderen SYCCarBrandTable-Objekts auswählen, das von super() als Kriterium + anderen neu hinzugefügten Kriterien zurückgegeben wird.

Ich bin nicht sicher, warum Sie so etwas tun möchten, aber wenn Sie die select-Anweisung auf die gleiche Tabelle Variable ausführen, überschreiben Sie eigentlich wirklich alles Verhalten, nichts hinzufügen.

Wenn ich es richtig verstanden habe, können Sie eine andere SYCCarBrandTable verwenden möchten:

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

    superCar = super(); 

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

    return ret; 
} 

Dann wieder Ich bin nicht sicher, ob, warum eine solche Sache nützlich sein würde, aber das ist eine Probe Weg Aggregation von Funktionalität, anstatt sie vollständig zu überschreiben.

0

Wenn Sie einer Auswahl zusätzliche Kriterien hinzufügen möchten, sollten Sie das Abfrageobjekt verwenden und Ihre Auswahl entwerfen. Dann sollten Sie eine neue Methode für Ihre Basisklasse namens modifieQuery() oder setQueryRange() erstellen. In dieser Methode fügen Sie Ihrer Abfrage einen Bereich hinzu, den Sie für die Basisklasse wünschen. Wenn Sie diese Methode in Ihrer Klasse "B" überschreiben, rufen Sie super auf und fügen zusätzliche Bereiche hinzu oder überschreiben einfach die Methode ohne super() und legen die Bereiche nach Bedarf fest. In Ihrer getTable-Methode für die Basisklasse rufen Sie modifieQuery() auf und führen sie aus.