获取发件人对象的非公共成员的价值

时间:2018-01-18 18:37:19

标签: c# reflection

我试图使用反射,我见过的所有例子都说这应该有效。我试图获取PortName属性,如下所示。

返回null:

var port = this.GetType().GetProperty("PortName", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);

enter image description here

1 个答案:

答案 0 :(得分:2)

您希望获得PortName中字段port的{​​{1}}属性的值,该字段本身是plc的字段

你正在做的是尝试从this获取名为PortName的属性,这显然不存在。

因此,让我们在this中获取字段port并获取plc的值:

PortName

现在您可以使用var field = this.plc.GetType().GetField("port", BindingFlags.NonPublic | BindingFlags.Instance); SerialPort port = (SerialPort)field.GetValue(this.plc);

相关问题