vb.net的反射之GetType.GetProperties取到数组为空的原因

本文介绍了一种在PLC与MES系统间通讯的方法,通过使用XStream来构建XML数据,并解决了在获取类属性时遇到的问题。文章详细记录了作者如何通过调整类属性的声明方式来实现对属性的正确获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在进行一个介于PLC与MES之间的通讯程序,从PLC读数据再组XML上报MES.

组XML使用了XStream,为了方便使用定义了一个所有成员都公开的类,偷懒吗 所以...

 Public Class PLCInfo
        Public Eqp As String
        Public Fab As String
        Public Area As String
        Public QName As String
        Public PlcIp As String
        Public PlcPort As String
        Public PlcNetNo As String
        Public PlcStation As String
        Public PcNetNo As String
        Public PcStation As String
        Public TRX As String
        Public RefreshTime As String
        Public P_PLCReady As String
        Public P_PCRead As String
        Public P_EqpName As String
        Public P_Chip As String
        Public P_Model As String
        Public isGenChip As String
End Class

因为这是个.xml的配置文件 里面有PLC点位,为了可扩展就想用反射取PLC点位的值,myType.GetProperties都是空的...

   '准备PLC点位资讯
            Dim myType As Type = GetType(BootConf.PLCInfo)
            For Each t As System.Reflection.PropertyInfo In myType.GetProperties
                Dim tagName As String = t.Name
                Dim value As String = t.GetValue(objPlcInfo, Nothing)
                '...
             Next

为啥捏?这么简单的应用不应该有问题啊,各种翻各种找,最后在MSDN看到:

---------------------------------------------------------------------

返回值

表示当前 Type 的所有公共属性 (Property) 的 PropertyInfo 对象数组。 - 或 - 如果当前 Type 没有公共属性 (Property),则为 PropertyInfo 类型的空数组。

--------------------------------------------------------------------

原来如此 GetProperties取的对象一定要有Property,要取的对象加个Property,搞定

    Public Class PLCInfo
        Public Eqp As String
        Public Fab As String
        Public Area As String
        Public QName As String
        Public PlcIp As String
        Public PlcPort As String
        Public PlcNetNo As String
        Public PlcStation As String
        Public PcNetNo As String
        Public PcStation As String
        Public TRX As String
        Public RefreshTime As String
        Public P_PLCReady As String
        Public P_PCRead As String
        Public Property P_EqpName As String
        Public Property P_Chip As String
        Public Property P_Model As String
        Public isGenChip As String
    End Class

 

转载于:https://www.cnblogs.com/visions/p/5490778.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值