如何在另一个类中引用和存储一个类的属性

时间:2019-09-17 20:09:36

标签: c# windows-10-iot-core

我正在为具有多个硬件输入(一个模拟,两个数字)的设备编写一个类,并且想在我的传感器类的构造函数中使用硬件类的属性(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)

}

我希望能够存储构造函数引用,并使它的工作与上述类似。我该怎么做?

谢谢!

1 个答案:

答案 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