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