我试图使用反射和我见过的所有例子说,这应该工作。我正在尝试获取如下所示的PortName属性。
返回null:
var port = this.GetType().GetProperty("PortName", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty);
Run Code Online (Sandbox Code Playgroud)
你想获得的价值PortName领域的财产port中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);
Run Code Online (Sandbox Code Playgroud)
现在您可以使用 port.PortName