bcquality/microsoft/knowledge/interfaces/guard-interface-casts-with-is.md
Jesper Schulz-Wedde 8f025ac679 Merge current main into development guidance
Reconcile the read-only guidance output with the machine-readable skill index,
adopt linked sample references required by bounded retrieval, and update the
guidance regression fixture for the retrieval helper dependency. Permit only
the known endpoint-DLP metadata stream during read-only evidence capture.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 638b66d2-9f06-4f60-8781-808709e1485c
2026-09-18 12:04:06 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
25..
interfaces
interface
is-operator
as-operator
type-test
cast
variant
runtime-error
al
w1
all

Guard optional interface casts with is

Description

From runtime 14.0, AL can type-test an interface or Variant with is and cast it to another interface with as. The test is non-throwing, but as raises a runtime error when the underlying codeunit does not implement the target interface. This matters when an extended capability is optional or implementations can come from other extensions.

Best Practice

Use is to establish that the value supports the target interface before using as. Cast directly only where the target implementation is an invariant guaranteed by the surrounding contract.

See sample: guard-interface-casts-with-is.good.al.

Anti Pattern

Using as unconditionally for an optional extended interface. An otherwise valid implementation of the base interface then fails at runtime merely because it does not implement the additional contract.

See sample: guard-interface-casts-with-is.bad.al.

Reference

Understand type testing and casting operators for interfaces