C#方法与属性:可能发生异常

joh*_*ohn 0 c# methods properties exception

我创建了一个库类CircuitController,通过串口与控制电路进行通信.

public class CircuitController
{
   // Enumerations.
   public enum Sensors { Sensor1, Sensor2, ..., Sensor15 };
   ...

   // Fields.
   private SerialPort serialPort;  // Set in constructor.
   private Dictionary<Sensors, Sensor> activeSensorCollection;
   ...

   // Properties.
   public Dictionary<Sensors, Sensor> ActiveSensors
   { get { return this.activeSensorCollection; } }       

   // Methods.
   public void SetSensorUnits(Sensors sensor, String sensorUnits)
   {
      // Creates serial command based off parameters, sends, receives, processes.
   }
   ...

   // Constructors.
   public CircuitController(...)
   {
      ... // Set CircuitController fields including nested classes.
      Sensor sensor1 = new Sensor(a,b,c,d,this);  // Link sensor to this controller instance.
      ... // Add sensors to dictionary.
   }          

   // Nested Classes.
   public class Sensor
   {
      // Fields.
      private CircuitController controller;   
      private String units;
      private Sensors sensorNumber;
      ...

      // Properties.
      public String Units
      {
         get
         {
            return this.controller.GetSensorUnits(this.sensorNumber);
         }
         set
         {
            this.controller.SetSensorUnits(this.sensorNumber, value);
          }
      }
      ...
   }
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题:即使可能抛出异常(例如串行通信错误),允许用户通过属性获取/设置传感器设置是否可以?

String sensor2Units = circuitControllerInstance.ActiveSensors[Sensor2].Units'
circuitControllerInstance.ActiveSensors[Sensor1].Units = "mm";
Run Code Online (Sandbox Code Playgroud)

我发现这比......更清楚了

String sensor2Units = circuitControllerInstance.GetSensorUnits(Sensors.Sensor2);
circuitControllerInstance.SetSensorUnits(Sensors.Sensor1, "mm");
Run Code Online (Sandbox Code Playgroud)

请注意,这些是简化的示例,一些Get/Set方法最多有5个参数,这些都是重复输入的麻烦.:/

Joh*_*ers 6

在设置属性时,我倾向于避免实际任何事情.而是将所有属性设置在内存中,然后添加一个"保存"方法,将属性"保存"到串行设备.