Modifying Method Signatures in Dynamics AX
I saw this in code recently and wanted to call it out so you don’t make this mistake. If you are modifying an existing AX method, try to avoid modifying the method’s signature – i.e. try not to mess with the list of parameters required for that method. If you modify the method signature in Dynamics AX, the customer will very likely have a merging problem with that method going forward. If it is a Microsoft method and in the next version Microsoft adds another parameter to the method, the customer instantly has a problem. Any new methods Microsoft added to call the method will no longer compile because we have overridden the method and changed what one of the parameters means. In a lot of scenarios you can get around the need for a parameter by adding a new parm method to the object and setting it from your calling code, then you don’t have to alter the method parameters.
Having said all of that, if you have to modify a method’s signature:
- Add your new parameter to the end of the parameter list for the method
- Make it optional.
If you put the parameter at the beginning of the parameter list or somewhere in the middle, all of the methods calling into this one will no longer compile and you’ll have to go modify them as well. In general, you want to keep our fingerprint of modifications as light as possible.
If you make the method optional all of the existing methods calling this method should still function because they’ll use the default value.