/// <summary>
        /// The good design stipulates that we remove the logging-consideration from the SensorCabinet-class altogether. Breaks with the single responsibility principles, anyway.
        /// </summary>
        public static void Main()
        {
            // "Composition root"
            InitializaAlarms();
            InitializeSensors();
            AttachAlarmsToSensors();

            IEnumerable <ISensor> sensorCollection = new List <ISensor>()
            {
                _temperatureSensor1,
                _temperatureSensor2,
                _pressureSensor
            };
            SensorCabinet sensorCabinet = new SensorCabinet(sensorCollection);

            // now do some monitoring...

            // At some point, we wish to write temperature sensor values to a log.
            // By removing the logger from the sensor-cabinet, we forego problems with the single-responsibility principle.
            InitializeTemperatureSensorLogger();
            var temperatureSensorData = sensorCabinet.GetAllTemperatureSensorsData();

            temperatureSensorLogger.WriteAllTemperatureSensorsDataToLog(temperatureSensorData);

            //
        }
        public void GoodDesign_TestHasNoLongerDependencyOnLogger()
        {
            // arrange
            MockSensor mockedSensor = new MockSensor();

            DependencyInversion_GoodDesign.SensorCabinet sensorCabinet = new DependencyInversion_GoodDesign.SensorCabinet(new List <ISensor> {
                mockedSensor
            });

            // act
            bool hasLongerALoggingMethod = sensorCabinet.GetType().GetMethods().Any(method => method.Name == "WriteAllTemperatureSensorsDataToLog");

            // assert
            Assert.IsFalse(hasLongerALoggingMethod);
        }