Dynamics AX Blog - Axapta 2.5 - Beiträge von 2015
Momentan angezeigt werden nur Beiträge, welche für die Dynamics AX-Version »Axapta 2.5« relevant sind. 
RSS-Feed dieser Version

RSS-Feed dieser Version
Momentan angezeigt werden nur Beiträge von »2015«.
|
|
|
|
|
|
Wer schon einmal die Parameter einer Methode erweitern musste, kennt vielleicht das Problem: Wenn man Glück hat kann man seinen neuen Parameter am Ende einfügen und mit einem Default-Wert vorbelegen.
Hat man nicht ganz so viel Glück und muss entweder der Parameter zwischen den vorhandenen einbauen oder darf/kann keinen Default-Wert angeben so muss man den gesamten AOT nach den Aufrufen dieser Methode durchsuchen (die Querverweise helfen hier enorm) und diese entsprechend anpassen.
Aufgrund dieser Problematik gehe ich bei meinen Methoden nun oft den Weg, daß ich nur einen einzigen Parameter einfüge, und zwar vom Typ einer - nennen wir sie einfach einmal DataContract-Klasse.
DataContracts sind dem einen oder anderen vielleicht aus dem SSRS-Umfeld bekannt, aber die selbe Logik kann ich auch in vielen anderen Situationen anwenden.
So sieht eine solche DataContract-Klasse beispielweise wie folgt aus:
{
ItemId itemId;
Qty qty;
}
{
itemId = _itemId;
return itemId;
}
{
qty = _qty;
return qty;
}
Eine Methode könnte dann wie folgt aussehen:
{
// … do something…
info(_dataContract.parmItemId());
}
Aufrufen muss ich eine solche Methode so:
dataContract = new MyDataContract();
dataContract.parmItemId("A1000");
dataContract.parmQty(123);
Object.myMethod(dataContract);
Kommt nun später ein neuer Parameter hinzu, muss ich den lediglich entsprechend in der DataContract-Klasse einfügen und die Logik in der Methode erweitern. Die Methodenaufrufe können u.U. so bleiben wie sie waren, lediglich die Aufrufe wo die geänderten Parameter berücksichtigt werden müssen, müssen angepasst werden.
Und zu guter Letzt kann ich solche DataContract-Klassen natürlich für mehrere Methoden verwenden.