Files
lmxopcua/src/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy/Import/ImportOptions.cs
T
2026-04-26 04:13:13 -04:00

28 lines
1.4 KiB
C#

namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Import;
/// <summary>
/// Options that drive an <see cref="IRsLogixImporter"/> run. Captures the few knobs that
/// reasonably differ between projects without forcing a dedicated subclass per import shape:
/// scope filter (Global vs. Local:N), maximum rows to keep (defensive cap on suspicious
/// exports), and whether to silently drop malformed rows or surface a parse exception.
/// </summary>
/// <remarks>
/// <para>
/// <see cref="ScopeFilter"/> matches the optional <c>Scope</c> column on RSLogix CSV
/// exports — "Global" tags live at the project root; "Local:1" / "Local:2" / etc. are
/// scoped to ladder file 1, ladder file 2, etc. When non-null, only rows whose
/// <c>Scope</c> value matches case-insensitively are emitted; rows with no <c>Scope</c>
/// column are treated as Global.
/// </para>
/// <para>
/// <see cref="IgnoreInvalid"/> defaults to <c>true</c> — RSLogix exports tend to carry
/// the occasional cosmetic row (single-letter alias, comment-only rows, blank lines)
/// and the v1 contract is "import what we can, log a warning for everything else".
/// Set to <c>false</c> to fail-fast on the first malformed row (useful for CI lint).
/// </para>
/// </remarks>
public sealed record ImportOptions(
string? ScopeFilter = null,
int? MaxRowsToImport = null,
bool IgnoreInvalid = true);