c# - 如何在另一个类中引用和存储一个类的属性
问题描述
我正在为具有多个硬件输入(一个模拟,两个数字)的设备编写一个类,我想在传感器类的构造函数中使用硬件类(ADC1、DI1、DI2 等)的属性。我该怎么做呢?
所以我有一个硬件类,可以让我访问我的硬件。还有更多输入,但截断版本如下所示:
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)
}
我希望能够存储构造函数引用并使其工作类似于上面。我该怎么做呢?
谢谢!!
解决方案
构造函数不能接受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
.
推荐阅读
- java - 在 Java 中存储和检索一个动作和多个动词之间的映射的数据结构
- dojo - 在拆分窗格模式下更改 ICN contentViewer 的选项卡标题?
- javascript - 单击表单内的按钮后页面未在 javascript 中重定向
- python - pandas - 通过列表添加两个或多个不同 DataFrame 的值
- android - JSON 解析器错误:org.json.JSONObject$1 类型的值 null 无法转换为 JSONObject
- amazon-web-services - 从 AWS S3 中删除不完整的分段上传文件
- jquery - 从嵌套的点击函数返回函数值
- java - 如何在运行时更改日志级别而不重新启动 Vert.x 应用程序
- android - 广播接收机未刷新移动电池电源更换数据
- javascript - 在 c# mvc 中的 javaScript 中将 html 代码作为字符串传递