Simple IController interface implementation with backing fields. Members are marked as virtual so it is possible to override them in subclasses.
ControllerBase<(Of <(TTask, TView>)>)
Base generic implementation of the IController<(Of <(TTask, TView>)>) interface. Has strongly typed associations to the linked task and view (of generic parameter types TTask and TView respectively) therefore eliminates the need of typecasting when accessing the task and the view.

Members are marked as virtual so it is possible to override them in subclasses.

Basing on the navigation information stored in the TaskInfo property performs navigation to the required view.

View activation is delegated to the linked ViewsManager object.

Navigator subclass which has no real functionality except for modifying the task state. The views manager is not used at all, and no actual view switching is done. This class is intended primarily for tests.


All controller classes should implement this interface. In practice it is more handy to inherit from ControllerBase or from ControllerBase<(Of <(TTask, TView>)>) class than to manually implement IController members.
IController<(Of <(TTask, TView>)>)
Generic extension of the IController interface. Has strongly typed generic associations to the task and the view. Therefore no typecasting is required when accessing the associated task or view.

Istead of implementing this interface manually you might better use the generic base controller class - ControllerBase<(Of <(TTask, TView>)>)