In AX7 X++ now supports the readonly keyword. Semantically it is identical to readonly in C#. In short; it allows you to define members on a class that can only be initialized in the declaration and in the constructor. class MyClass { readonly str identifier = "XYZ"; readonly str identifier2; public void new(str _identifier) { identifier2 = _identifier; } public void foo() { // The field 'identifier2' is read only. A value cannot be assigned to it. //identifier2 = "ABC"; } } |
In X++ we still recommend the construct pattern and the newFrom pattern. These patterns recommend the new method to not have any parameters – readonly has little applicability, when the new method is parameter-less.
So why do we prefer parameter-less new methods?
- It enables serialization of classes using the pack/unpack pattern – all classes extending RunBase are subject to this.
- It enables the extension framework and smart customizations.
If you have a good use scenario for readonly - please share in the comments section below.
No comments:
Post a Comment