using System; namespace VisionCommon { public class AlignInfo { private SubSysInfo _subSysInfo; public eUnitId UnitId { get { return _subSysInfo.UnitId; } set { _subSysInfo.UnitId = value; } } public string UnitName { get { return _subSysInfo.UnitName; } set { _subSysInfo.UnitName = value; } } public eSubSysId SubSysId { get { return _subSysInfo.SubSysId; } set { _subSysInfo.SubSysId = value; } } public string SubSysName { get { return _subSysInfo.SubSysName; } set { _subSysInfo.SubSysName = value; } } public eAlignId AlignId { get; set; } = eAlignId.None; public string AlignName { get; set; } = string.Empty; public AlignInfo( eUnitId unitId, string unitName, eSubSysId subSysId, string subSysName, eAlignId alignId, string alignName) : this(new SubSysInfo(new UnitInfo(unitId, unitName), subSysId, subSysName), alignId, alignName) { } public AlignInfo(SubSysInfo subSysInfo, eAlignId alignId, string alignName) { _subSysInfo = subSysInfo.Clone(); AlignId = alignId; AlignName = alignName; } public new AlignInfo Clone() { return new AlignInfo( new SubSysInfo(new UnitInfo(UnitId, UnitName), SubSysId, SubSysName), AlignId, AlignName); } public string GetKey() { return CreateKey(UnitId, SubSysId, AlignId); } public static string CreateKey(eUnitId unitId, eSubSysId subSysId, eAlignId alignId) { return $"{(int)unitId}_{(int)subSysId}_{(int)alignId}"; } public override string ToString() { return $"{(int)UnitId}-{UnitName}_{(int)SubSysId}-{SubSysName}_{(int)AlignId}-{AlignName}"; } public override bool Equals(object obj) { return Equals(obj as AlignInfo); } public bool Equals(AlignInfo alignInfo) { if (alignInfo is null) { return false; } if (Object.ReferenceEquals(this, alignInfo)) { return true; } return this.UnitId == alignInfo.UnitId && this.SubSysId == alignInfo.SubSysId && this.AlignId == alignInfo.AlignId; } public override int GetHashCode() { return _subSysInfo.GetHashCode() ^ AlignId.GetHashCode(); } public UnitInfo ToUnitInfo() { return _subSysInfo.ToUnitInfo(); } public SubSysInfo ToSubSysInfo() { return _subSysInfo.Clone(); } } }