feat(commons): add DataType.List + ElementDataType companion for multi-value attributes

This commit is contained in:
Joseph Doherty
2026-06-16 15:18:12 -04:00
parent 09d7319958
commit 70fa0e7397
4 changed files with 20 additions and 1 deletions
@@ -1,3 +1,5 @@
using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums;
namespace ZB.MOM.WW.ScadaBridge.Commons.Entities.Instances;
public class InstanceAttributeOverride
@@ -10,6 +12,13 @@ public class InstanceAttributeOverride
public string AttributeName { get; set; }
/// <summary>Gets or sets the override value, or <c>null</c> to clear a previous override.</summary>
public string? OverrideValue { get; set; }
/// <summary>
/// For <see cref="DataType.List"/> attributes: the scalar type of each
/// element (String, Int32, Float, Double, Boolean, DateTime). Null for scalar
/// attributes. The element type is fixed by the base attribute and cannot be
/// changed on a derived template or instance override.
/// </summary>
public DataType? ElementDataType { get; set; }
/// <summary>Initializes a new <see cref="InstanceAttributeOverride"/> for the given attribute name.</summary>
/// <param name="attributeName">The name of the attribute to override.</param>
@@ -25,6 +25,13 @@ public class TemplateAttribute
/// </summary>
public DataType DataType { get; set; }
/// <summary>
/// For <see cref="Enums.DataType.List"/> attributes: the scalar type of each
/// element (String, Int32, Float, Double, Boolean, DateTime). Null for scalar
/// attributes. The element type is fixed by the base attribute and cannot be
/// changed on a derived template or instance override.
/// </summary>
public DataType? ElementDataType { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the attribute is locked from override.
/// </summary>
public bool IsLocked { get; set; }
@@ -8,5 +8,6 @@ public enum DataType
Double,
String,
DateTime,
Binary
Binary,
List
}
@@ -66,6 +66,8 @@ public sealed record ResolvedAttribute
public string? Value { get; init; }
/// <summary>Gets the data type name.</summary>
public string DataType { get; init; } = string.Empty;
/// <summary>For List attributes: the element scalar type name; null otherwise.</summary>
public string? ElementDataType { get; init; }
/// <summary>Gets whether the attribute is locked.</summary>
public bool IsLocked { get; init; }
/// <summary>Gets the attribute description.</summary>