---
title: BindingUtility
summary: API reference for BindingUtility.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Controls.AJAX.Infragistics111
reference_type: package
---

# BindingUtility

`BindingUtility` is the shared, stateless reflection/`TypeDescriptor` engine underneath every binding operation in this library — [AutoBindControlAncestor](AutoBindControlAncestor.md), [BindingManager](BindingManager.md), and [SAIFAJAXControlAncestor](SAIFAJAXControlAncestor.md) all delegate their path resolution and value transfer to it. Every method swallows reflection exceptions internally, which is the root cause of this library's "fail silently on a bad bind path" behavior. ([BR-AJAX-005](../../business-rules.md#br-ajax-005-reflection-failures-during-binding-are-suppressed))

## Purpose
- Resolves a dotted property path (e.g. `Submission.Locations.Primary`) segment-by-segment against a root object using `TypeDescriptor`, giving the whole library a single, consistent path-walking implementation. ([BR-AJAX-004](../../business-rules.md#br-ajax-004-bound-target-resolved-by-walking-the-dotted-bindsource-path))
- Reads and writes a named property's value on a resolved object, underpinning both the bind-to-control and push-back-to-model directions of every auto-bind control.
- Swallows all reflection failures (`Catch … 'gobble'`) so a mistyped bind path never raises an exception, at the cost of masking configuration errors. ([BR-AJAX-005](../../business-rules.md#br-ajax-005-reflection-failures-during-binding-are-suppressed))

## Context
- Namespace: `SAIF.Presentation.Web.Controls.V2.AJAX`
- Assembly/package: `SAIF.Presentation.Web.Controls.AJAX.Infragistics111` (packaged in `SAIF.BOF.Presentation.Web.Infragistics111`)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `GetObject` | `Shared Function GetObject(root As Object, path As String) As Object` | Walks a dotted path from `root`, returning the object at the end of the path, or `Nothing` on any resolution failure ([BR-AJAX-004](../../business-rules.md#br-ajax-004-bound-target-resolved-by-walking-the-dotted-bindsource-path)) |
| `GetObjectValue` | `Shared Function GetObjectValue(root As Object, propertyName As String) As Object` | Reads a single named property's value from `root` via `TypeDescriptor`, returning `Nothing` on failure |
| `SetObjectValue` | `Shared Sub SetObjectValue(root As Object, propertyName As String, value As Object)` | Writes a value to a single named property on `root` via `TypeDescriptor`, silently doing nothing on failure |
| `BindValue` | `Shared Function BindValue(root As Object, path As String, propertyName As String) As Object` | Combines `GetObject` and `GetObjectValue` to resolve a full `BindSource`/`BindProperty` pair in one call |

## Behavioral notes
- Every method here wraps its reflection logic in a `Try`/`Catch` that discards the exception entirely, so callers cannot distinguish "path resolved to `Nothing`" from "path resolution threw" — both look identical to the caller. ([BR-AJAX-005](../../business-rules.md#br-ajax-005-reflection-failures-during-binding-are-suppressed))
- Because failures are silent, a misconfigured `BindSource`/`BindProperty` produces no error and no audit trail — a page can appear to save successfully while a value was never actually written.*

## Constraints and usage notes
- All property resolution goes through `System.ComponentModel.TypeDescriptor`, so bound properties must be discoverable by the standard component model (public properties work; properties hidden from `TypeDescriptor` will not resolve).
- Consumers relying on this helper for anything other than the auto-bind controls in this library should be aware that binding errors are invisible by design.

## Related documentation
- [Index](../../index.md)
- [Overview](../../overview.md)
- [Architecture](../../architecture.md)
- [Business rules](../../business-rules.md)
- [API reference](../index.md)

> **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.Controls.AJAX.Infragistics111/BindingUtility.vb`
