The Application Model consists of nodes and their properties. Nodes can have child nodes; and they form the tree structure of the Application Model. This topic explains how the Application Model structure for a particular application is formed.
The Application Model's tree nodes are defined via interfaces. These interfaces are derived from the base IModelNode interface. Its members manage access to the parent and child nodes, as well as to the current node's properties.
The Application Model's root node (the Application node) is defined by the IModelApplication interface. This interface defines the node's properties (the Title, Company, Description an so on) and child nodes (the ActionDesign, Views and others). Each child node is represented by an interface that defines its properties and child nodes. So the root node, together with its child nodes, forms the Application Model's basic structure.
The basic structure is customizable. There are so-called extenders. They add properties and/or child nodes to a certain Application Model node. These extenders are also defined by the interfaces derived from the IModelNode interface. To add them to the Application Model's final structure, the predefined members exposed by the ModuleBase class and a Controller's IModelExtender interface are used. For instance, the FilterController extends the ListView node with the Filters node by adding the IModelListViewFilters extender to the IModelListView node. When implementing a custom Module or a Controller, you can extend the Application Model if required. To learn how to do this, refer to the Extend and Customize the Application Model in Code help topic.
When an application is started, all interfaces that define and extend the Application Model are collected from code. Then, an object implementing all these interfaces is compiled. This object represents the actual Application Model. So, depending on the Modules and Controllers used in an application, the Application Model structure can vary.
The following sections list the common and extending Application Model interfaces shipped with XAF.