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

EE_*_*aig -1 c# reflection

我试图使用反射和我见过的所有例子说,这应该工作。我正在尝试获取如下所示的PortName属性。

返回null:

var port = this.GetType().GetProperty("PortName", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Ofi*_*ten 5

你想获得的价值PortName领域的财产portplc,这本身就是一个场this

您正在做的是尝试获取一个名称属性PortNamethis该属性显然在那里不存在。

因此,让我们获取字段port内部plc并获取的值PortName

var field = 
    this.plc.GetType().GetField("port", BindingFlags.NonPublic | BindingFlags.Instance);
SerialPort port = (SerialPort)field.GetValue(this.plc);
Run Code Online (Sandbox Code Playgroud)

现在您可以使用 port.PortName

  • 这太棒了!十分感谢你! (2认同)