public override void RemoveReference(ModelCode referenceId, long globalId) { switch (referenceId) { case ModelCode.MEASUREMENT_TERMINAL: if (Measurements.Contains(globalId)) { Measurements.Remove(globalId); } else { CommonTrace.WriteTrace(CommonTrace.TraceWarning, "Entity (GID = 0x{0:x16}) doesn't contain reference 0x{1:x16}.", this.GID, globalId); } break; default: base.RemoveReference(referenceId, globalId); break; } }
/// <summary> /// Проверить, подходит ли данное устройство для места учёта и управления - покрывает ли оно /// те измерения и управляющиее воздействия, которые необходимы на месте учёта. /// На данный момент сделано допущение, что устройство покрывает более или столько же измерений, /// или управляющих воздействий, сколько требуется на месте учёта и управления. /// </summary> /// <param name="mcz">Место учёта и управления.</param> /// <returns>True, если подходит.</returns> public bool IsSuitableForMCZ(MeasurementAndControlZone mcz) { try { var measurementsResult = mcz.Measurements != null && mcz.Measurements.Any() ? Measurements != null && Measurements.Any() && mcz.Measurements.All(m => Measurements.Contains(m)) // Устройство подхдит, если содержит все измерения места : true; // Если нет измерений на месте, то устройство автоматически подходит var controlsResult = mcz.Controls != null && mcz.Controls.Any() ? Controls != null && Controls.Any() && mcz.Controls.All(c => Controls.Contains(c)) // Устройство подхдит, если поддерживает все управляющие воздействия места : true; // Если воздействий на месте не требуется, то устройство автоматически подходит return(measurementsResult && controlsResult); } catch (Exception ex) { Console.WriteLine("IsSuitableForMCZ failed! {0}", ex.Message); return(false); } }