There are three method accessibility modifiers in X++ language. It is well known knowledge of their purpose, as they are common for many programming languages.
In short, public allows for unrestricted use by any classes, protected – only by derived and declaring, private narrows access to declaring class. So, by theory, we shouldn’t be able to access private method outside declaring class. In X++ this is true and false at the same time. How is it possible? Surprisingly, it is very simple. We only need to cast an instance of our class to the object type – base class from which all other classes are derived. Please apply and run following (pseudo) code and you will see.
public void publicMethod()
info("Hey, I'm public!");
protected void protectedMethod()
info("Hey, I'm protected!");
private void privateMethod()
info("Hey, I'm private!");
public static void main(Args args)
class1 = new TestClass1();
objectClass1 = class1;
I personally see this functionality as a bug, but quite useful one. It happened to me already few times, that I had to invoke some private methods. Normally I would overwrite interested object and change its access modifier. But this approach is definitely not elegant. Firstly, having copy in upper layer can cause some problems when upgrading. Secondly, we globally and explicitly change developer’s will.
Summarizing, both solutions should be deeply considered before use, but one of them seems to be much easier to implement.
There is more. Similarly, we can also invoke private table methods. Of course instead of object type a common must be used.
Implementing a new ERP system in an organisation is always a challenge. Users question whether they will be able to cope with analysing the data flow in an integrated system without external support. The accountant wonders whether all the set-up accounts are correct. The chief technologist cannot get rid of troublesome thoughts about whether the routings and boms are set up optimally. This is why it is so important to have a reliable service team to help the company control the system in the post-implementation stage. In this article, we take a look at the issues surrounding the implementation of an ERP system and the benefits of maintaining proactive service support.
328.77 million terabytes of data are generated every day - this is the estimate for the first quarter of 2023 (1). These are massive amounts of data on a global scale. On a smaller scale, such as an enterprise, it's difficult to estimate because it depends on the organisation in question, but one thing is certain - collecting, processing and analysing this data is the key to business success today. Why is the Data Lake service so important for data analysis and reporting in Microsoft Dynamics 365 Finance and Operations? How can you tame the data by integrating Microsoft Power BI analytics with Data Lake? We have drawn up some tips.
The retail industry is still dealing with the effects of the pandemic that lasted almost three years. In addition to this, further global events are causing disruption to the supply chain or financial stability of many retailers globally. As the industry confronts new challenges shaped by economic and geopolitical factors, it also faces trends influenced by changing customer expectations and needs. Here are 5 developments and trends to watch.
An interactive, AI-powered support for sales, customer service, marketing, and supply chain - Microsoft Dynamics 365 Copilot leverages generative AI and natural language processing technology to perform simple, yet time-consuming daily tasks that workload employees but can be automated.