我正在为具有多个硬件输入(一个模拟,两个数字)的设备编写一个类,并且想在我的传感器类的构造函数中使用硬件类的属性(ADC1,DI1,DI2等) 。我该怎么做?
因此,我有一个HW类,可让我访问硬件。还有更多输入,但是截断的版本看起来像这样:
public class HWClass
{
public GpioPin INPUT1;
public GpioPin INPUT2;
public double ADC1Value { get => ADC1(); }
private double ADC1()
{
//ADC code here
}
}
我有一个使用一个模拟和两个数字输入的传感器。我想使用一个类来提供一些抽象。理想情况下,将输入放入类构造函数中。目前,我的传感器类如下:
public class sensor
{
private double AnalogInput;
private GpioPin Input1;
private GpioPin Input2;
public Sensor(ref double analogInput, ref GpioPin input1, ref GpioPin input2)
{
}
}
在我的主班中,我希望能够将输入分配给传感器,因为我有多个相同的传感器。如下所示:
public class myApp
{
private HWClass myHardware;
public myApp()
{
sensor sensor1 = new sensor(myHardware.ADC1Value, myHardware.Input2, myHardware.Input3)
sensor sensor2 = new sensor(myHardware.ADC3Value, myHardware.Input5, myHardware.Input4)
}
我希望能够存储构造函数引用,并使它的工作与上述类似。我该怎么做?
谢谢!
答案 0 :(得分:1)
构造函数不能使用ref
参数。
public Sensor(double analogInput, GpioPin input1, GpioPin input2)
{
AnalogInput = analogInput;
Input1 = input1;
Input2 = input2;
}
或者,您可以提供复杂对象的实例。
public Sensor(HWClass hw)
: this(hw.ADC1Value, hw.INPUT1, hw.INPUT2)
{
}
或者如果需要的话,也可以在内部存储该复杂对象。
public class Sensor
{
private HWClass hw;
public Sensor(HWClass hw)
{
this.hw = hw;
}
}
请注意,将值类型复制到另一个类中,而引用类型指向同一引用。如果要在另一个类中存储引用类型的副本,则应创建一个新实例,例如,通过实现ICloneable
。