示例#1
0
        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);
            }
        }