.Net domain proxy hierarchy

There are four key base proxies that you can extend to create new proxies for a control in the .Net domain. They are ObjectProxy, ComponentProxy, ControlProxy, and ControlWithSubobjectsProxy.
The ObjectProxy proxy is the base proxy for .Net domain proxies. By default it is mapped to System.Object class objects. It contains the default implementation of various base class methods, such as GetChildren(), GetMappableChildren(), and GetRecognitionProperties(). This is a non-UI proxy. If your control is derived from the System.Object class, then you can inherit the proxy for the control from ObjectProxy.
The ComponentProxy proxy is the base class for dealing with objects derived from System.ComponentModel.Component. This proxy implements TestObject methods such as GetParent() and GetMappableChildren().
By default, any .Net control that you derive from the System.Windows.Forms class is mapped to the ControlProxy proxy. It provides both coordinates-based record and playback support for mouse actions such as click, drag, and hover. It also provides support for properties verification point, scrolling object, and object related point into view.
The ControlWithSubobjectsProxy proxy implements basic functionalities for container controls such as Form and UserControl. This proxy also provides support for controls with parts that can be clicked and addressed, for example DataGrid control that has SubItem Cell and header. In addition, the ControlWithSubobjectsProxy provides support for record and playback for scrollbar SubItem, scrolling for SubItem in the control and SubItem in nested ScrollablControl parent.

Proxy hierarchy for .Net controls

The following figure is a class diagram of the proxy hierarchy for .Net controls: