---
title: clsFactoryBase
summary: API reference for clsFactoryBase.
status: draft
owner: SAIF Documentation Team
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.MVC
reference_type: package
---

# clsFactoryBase

`clsFactoryBase` is the abstraction point that decouples `ViewPageBase`/`ViewControlBase` from any specific consuming application's concrete controller and model types. Each consuming application implements this class once to supply its own controller/model pair, letting the shared page/control base classes remain generic.

## Purpose
- Defines the contract (`GetController`, `GetModel`) every consuming application must implement to plug its own concrete `clsControllerBase`/`clsModelBase` types into the shared page lifecycle.
- Is the object `ViewPageBase`/`ViewControlBase` hold a reference to and call at page-initialization time to obtain a controller instance for the current request.

## Context
- Namespace: `SAIF.Presentation.Web.MVC`
- Assembly/package: `SAIF.BOF.Presentation.Web.Infragistics103` (source-bundled)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `GetController` | `Public MustOverride Function GetController() As clsControllerBase` | Returns a concrete `clsControllerBase` instance for the current page/control; implemented entirely by the consuming application. |
| `GetModel` | `Public MustOverride Function GetModel() As clsModelBase` | Returns a concrete `clsModelBase` instance; implemented entirely by the consuming application, and called both by `clsControllerBase.Model` (lazy model creation) and `clsControllerBase.Navigate2` (new-model creation). |

## Behavioral notes
- This class has no fields, no constructor logic, and no default (non-abstract) behavior — it exists purely as a `MustInherit` contract.
- Neither member has a body in this library; both are pure abstract declarations (`MustOverride`), so no shared/default factory logic can be documented here.

## Constraints and usage notes
- Every consuming SAIF web application built on this library must supply exactly one concrete `clsFactoryBase` subclass per application (or per controller family) to satisfy `GetController`/`GetModel`.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- SAIF.Presentation.Web.MVC\clsFactoryBase.vb
