Overriding services
ERP Core uses the repository pattern and the IServiceProvider to implement business logic. In order to override the base functionality provided by the system, you can override the virtual methods and install the overridden class as a service in your plug-in.
The automatic service installer first installs all the classes marked with the InstallAsServiceAttribute then installs all the classes that implement the IInstallAsService interface. Base repositories implement the IInstallAsService and can be overridden by inheriting them in a new class that is marked with the InstallAsServiceAttribute.
An example of an base functionality override can be found if you search the implementation of ICalendarRepository (implemented by CalendarRepository) and its override by the CalendarRepositoryOverride found in the HospitalityPlugIn project.
