public static Converter CreateConverter(SensorUnity expectedUnity, SensorUnity realUnity, Sensor sensor, Visualizer visualizer) { foreach (Type converterType in typeof(Converter).Assembly.GetTypes()) { ConverterAttribute converterAttribute = (ConverterAttribute)converterType.GetCustomAttribute(typeof(ConverterAttribute)); if (converterAttribute != null && converterAttribute.inputUnity == realUnity && converterAttribute.outputUnity == expectedUnity) { return((Converter)Activator.CreateInstance(converterType, sensor, visualizer)); } } throw new Exception("There is no converter supporting this conversion, expected: " + expectedUnity.ToString() + ", real: " + realUnity); }
public static Sensor CreateSensor(SensorUnity sensorUnity, SensorType sensorType) { Visualizer visualizer = VisualizerFactory.CreateVisualizer(sensorUnity, sensorType); Sensor sensor = CreateSensorInternal(sensorUnity, sensorType); VisualizerAttribute visualizerAttribute = (VisualizerAttribute)visualizer.GetType().GetCustomAttribute(typeof(VisualizerAttribute)); if (visualizerAttribute.unity != sensorUnity) { sensor = (Sensor)ConverterFactory.CreateConverter(visualizerAttribute.unity, sensorUnity, sensor, visualizer); } return(sensor); }
private static Sensor CreateSensorInternal(SensorUnity sensorUnity, SensorType sensorType) { Sensor sensor = null; foreach (Type sensorClass in typeof(Sensor).Assembly.GetTypes()) { SensorAttribute sensorAttribute = (SensorAttribute)sensorClass.GetCustomAttribute(typeof(SensorAttribute)); if (sensorAttribute != null && sensorAttribute.type == sensorType && sensorAttribute.unity == sensorUnity) { sensor = (Sensor)Activator.CreateInstance(sensorClass); } } if (sensor == null) { throw new Exception("There is no sensor class corresponding the this criteria, type: " + sensorType + ", unity: " + sensorUnity); } return(sensor); }
public static Visualizer CreateVisualizer(SensorUnity sensorUnity, SensorType sensorType) { Type finalVisualizerType = null; foreach (Type visualizerType in typeof(Visualizer).Assembly.GetTypes()) { VisualizerAttribute visualizerAttribute = (VisualizerAttribute)visualizerType.GetCustomAttribute(typeof(VisualizerAttribute)); if (visualizerAttribute != null && !visualizerType.IsInterface && visualizerAttribute.type == sensorType) { if (visualizerAttribute.unity == sensorUnity) { finalVisualizerType = visualizerType; break; } finalVisualizerType = visualizerType; } } if (finalVisualizerType == null) { throw new Exception("There is no visualizer supporting the type: " + sensorType.ToString()); } return((Visualizer)Activator.CreateInstance(finalVisualizerType)); }
public ConverterAttribute(SensorUnity inputUnity, SensorUnity outputUnity) { this.inputUnity = inputUnity; this.outputUnity = outputUnity; }
public SensorAttribute(SensorType type, SensorUnity unity) { this.type = type; this.unity = unity; }
public VisualizerAttribute(SensorType temperature, SensorUnity celsuis) { this.temperature = temperature; this.celsuis = celsuis; }