Class PickAttribute
One row in a feature's pick / object-info attribute display. Carries both the raw on-the-wire shape (Code / RawValue) and a Feature-Catalogue-decoded shape (Name / DisplayValue) so a viewer can show the friendly form by default while keeping the raw values available in tooltips.
public sealed class PickAttribute
- Inheritance
-
PickAttribute
- Inherited Members
Remarks
Trees are formed by populating Children: complex
attributes are surfaced as a parent PickAttribute (with the
complex-attribute code/name and an empty value) plus one child per
sub-attribute. Decoding obeys the S-100 Edition 5.2.1 Part 5 Feature
Catalogue (ISO 19110): simple-attribute codes resolve to their
human-readable name, listed-value codes resolve to their label.
Fields
NavigationNoticeCode
The Code of a not-for-navigation notice row
(NavigationNotice(string)): "notice".
public const string NavigationNoticeCode = "notice"
Field Value
Properties
Children
Sub-attributes of a complex attribute. Empty for simple attributes and for leaf rows of a complex attribute.
public IReadOnlyList<PickAttribute> Children { get; init; }
Property Value
Code
The raw on-the-wire attribute or sub-attribute code (e.g. "OBJNAM", "CATPIB").
public required string Code { get; init; }
Property Value
DateTimeRangeValue
Optional typed time-range backing this attribute (start, end). Same contract as DateTimeValue.
public (DateTime Start, DateTime End)? DateTimeRangeValue { get; init; }
Property Value
DateTimeValue
Optional typed timestamp value backing this attribute. When set, presentation layers should re-format the value through their own date/time formatter rather than relying on RawValue or DisplayValue. RawValue still carries an ISO 8601 representation for non-UI consumers (serialization, MCP, tests).
public DateTime? DateTimeValue { get; init; }
Property Value
DepthMetresValue
Optional typed depth value (canonical metres) backing this attribute.
When set, presentation layers should re-format the value through the
active mariner DepthUnit setting (S-100 Part 9 ยง4.2) rather
than relying on RawValue or DisplayValue.
RawValue still carries the unit-less numeric metres
representation for non-UI consumers (serialization, MCP, tests).
public double? DepthMetresValue { get; init; }
Property Value
DisplayName
public string DisplayName { get; }
Property Value
DisplayText
The value most viewers want to render: DisplayValue when available, otherwise RawValue.
public string DisplayText { get; }
Property Value
DisplayValue
Friendly display value resolved through the dataset's Feature
Catalogue (e.g. listed-value label), or null when no
decoding applies.
public string? DisplayValue { get; init; }
Property Value
ExternalText
The resolved textual content of the external text file named by a
fileReference attribute (S-100 Edition 5.2.1 Part 5; S-101
Feature Catalogue simple attribute fileReference, aliases
TXTDSC / NTXTDS), or null when this row is not a
file reference or the referenced file could not be resolved from the
dataset's exchange set. RawValue still carries the
referenced file name. Presentation layers (e.g. the viewer's pick
report) surface this as expandable text, mirroring how an ECDIS lets
the mariner read an externally referenced textual description.
public string? ExternalText { get; init; }
Property Value
HasExternalText
true when ExternalText carries resolved content
from an external text file referenced by this attribute.
public bool HasExternalText { get; }
Property Value
IsNavigationNotice
true when this row is the product's not-for-navigation notice
rather than a value of the feature, e.g. "Weather model data, not for
navigation." on a weather grid pick. Non-viewer callers (MCP, CLI)
show it as an ordinary row; a host that already leads its pick report
with its own notice for the product hides it so the notice reads once
(#1096).
public bool IsNavigationNotice { get; init; }
Property Value
Name
Human-readable attribute name resolved through the dataset's
Feature Catalogue, or null when no FC was available or the
code is not defined.
public string? Name { get; init; }
Property Value
RawValue
The unmodified value as written in the dataset.
public required string RawValue { get; init; }
Property Value
Methods
NavigationNotice(string)
A not-for-navigation notice row: NavigationNoticeCode,
named "Notice", with text as its value and
IsNavigationNotice set.
public static PickAttribute NavigationNotice(string text)
Parameters
textstringThe notice, e.g. "Weather model data, not for navigation.".
Returns
- PickAttribute
The notice row.