using System.Collections.Generic;
public static List<DeviceParameters> ParametersA { get; } = new List<DeviceParameters>();
public static List<DeviceParameters> ParametersB { get; } = new List<DeviceParameters>();
public static List<double> XValuesOfA { get; } = new List<double>();
public static List<double> YValuesOfA { get; } = new List<double>();
public static List<double> XValuesOfB { get; } = new List<double>();
public static List<double> YValuesOfB { get; } = new List<double>();
public static void Main(string[] args)
var operationType = OperationType.A;
var operationAExecuter = new MyDeviceValues(ParametersA, XValuesOfA, YValuesOfA);
var operationBExecuter = new MyDeviceValues(ParametersA, XValuesOfA, YValuesOfA);
var deviceOperationExecuter
= operationType == OperationType.A ? operationAExecuter : operationBExecuter;
var myOperationExecuter = new MyOperationExecuter();
myOperationExecuter.DoMyOperation(deviceOperationExecuter);
public class MyDeviceValues
public MyDeviceValues(List<DeviceParameters> parameters, List<double> xValuesOf, List<double> yValuesOf)
public List<DeviceParameters> Parameters { get; }
public List<double> XValues { get; }
public List<double> YValues { get; }
public double CurrentValue { get; }
public DeviceParameters Parameters { get; set; }
public class MyOperationExecuter
public Device SharedDevice { get; }
public Device DeviceA { get; }
public Device DeviceB { get; }
public MyOperationExecuter()
public void DoMyOperation(MyDeviceValues myDeviceValues)
var changingDeviceParameters = myDeviceValues.Parameters;
myDeviceValues.XValues.Clear();
myDeviceValues.YValues.Clear();
foreach (var parameters in changingDeviceParameters)
SharedDevice.Parameters = parameters;
myDeviceValues.XValues.Add(DeviceA.CurrentValue);
myDeviceValues.YValues.Add(SharedDevice.CurrentValue);
Console.WriteLine("It Worked");
public class DeviceParameters
public enum OperationType