Each definition is a description of the behavior and properties of a particular control. The control must know about the definition and its implementation has to read the definition specifically. The definition provides default values of the properties in a control, which are kept in memory. Each definition also has a corresponding configuration element that persists its values in Sitefinity CMS configuration. The following diagram illustrates how all those components interact, by taking as an example the TextField control.
The control is a regular field control.
The definition class contains properties that will be modified for each scenario where the control is used. Those are the properties controlling the look and behavior of the control. The definition keeps default values for those properties in memory.
The configuration element contains the same properties as the definition class. Its purpose is to persist their values in configuration.
To make sure that the definition class and configuration element always have the same properties, there is an interface they both implement. The properties in the interface must be available both in the definition and the configuration element.
As you can see, this scheme allows us to persist control properties. We can store the behavior and look of a control in configuration and then load it. This is what provides the structure in the whole backend UI. We can reuse those saved properties whenever we want.
Note that all definitions are specific to a control. The implementation of the control has to read those persisted values each time. This is done in the Configure() method, usually invoked for each control in the backend.
Back To Top