/// <summary>
 /// Constructs a new AxopatchDevice
 /// </summary>
 /// <param name="p">Axopatch instance</param>
 /// <param name="c">Symphony Controller instance</param>
 /// <param name="backgroundModes">Enumerable of operating modes</param>
 /// <param name="backgroundMeasurements">Corresponding background Measurement for each operating mode</param>
 public AxopatchDevice(
     IAxopatch p,
     Controller c,
     IEnumerable<AxopatchInterop.OperatingMode> backgroundModes,
     IEnumerable<IMeasurement> backgroundMeasurements)
     : this(p, c,
            backgroundModes.Zip(backgroundMeasurements,
                                (k, v) => new {Key = k, Value = v})
                           .ToDictionary(x => x.Key, x => x.Value))
 {
 }
 /// <summary>
 /// Constructs a new AxopatchDevice.
 /// 
 /// This constructor is provided as a convenience for Matlab clients. .Net clients should use the typed version.
 /// </summary>
 /// <param name="p">Axopatch instance</param>
 /// <param name="c">Controller instance for this device</param>
 /// <param name="backgroundModes">Enumerable of operating mode names. Allowed values are "Track", "VClamp", "I0", "IClampNormal", "IClampFast".</param>
 /// <param name="backgroundMeasurements">Corresponding background Measurement for each operating mode in backgroundModes</param>
 public AxopatchDevice(
     IAxopatch p,
     Controller c,
     IEnumerable<string> backgroundModes,
     IEnumerable<IMeasurement> backgroundMeasurements)
     : this(p, c,
            backgroundModes.Select(k =>
                {
                    AxopatchInterop.OperatingMode mode;
                    Enum.TryParse(k, false, out mode);
                    return mode;
                }),
            backgroundMeasurements)
 {
 }
 /// <summary>
 /// Constructs a new AxopatchDevice
 /// </summary>
 /// <param name="axopatch">Axopatch instance</param>
 /// <param name="c">Symphony Controller instance</param>
 /// <param name="background">Dictionary of background Measurements for each Axopatch operating mode</param>
 public AxopatchDevice(IAxopatch axopatch, Controller c, IDictionary<AxopatchInterop.OperatingMode, IMeasurement> background)
     : base("Axopatch", "Molecular Devices", c)
 {
     Axopatch = axopatch;
     Backgrounds = background;
 }