【机房重构】泛型

【背景】

       泛型,在机房收费系统里面有着广泛的应用。

【定义】
       泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法存储或者使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型或其方法的参数类型出现。泛型的方法还可以将参数类型用作返回值类型或者某个形参的类型。

【为什么使用泛型】

泛型的作用就是避免强制类型转换,提高类型安全,提高代码的重用性,减少装箱拆箱提高性能,减少错误。

【应用案例】

 

Imports System.Reflection  
Module ConvertHelper  
    Public Class ConvertHelper  
        '将datatable转换为泛型集合  
        Public Shared Function ConvertToList(Of turn As {New})(ByVal dt As DataTable) As IList(Of turn)  
            '这里new是用来约束的;  
  
            Dim mylist As New List(Of turn) '定义最终返回的集合  
            Dim myType As Type = GetType(turn) '得到实体类的类型名  
            Dim dr As DataRow '定义行集  
            Dim tmpName As String = String.Empty '定义一个临时变量  
  
            '遍历datatable表的所有数据行  
            For Each dr In dt.Rows  
                Dim myturn As New turn  
                Dim propertys() As PropertyInfo = myturn.GetType().GetProperties() '定义属性集合  
                Dim pr As PropertyInfo  
  
                '遍历该对象的所有属性  
                For Each pr In propertys  
                    tmpName = pr.Name '将属性名称赋值给临时变量  
                    If (dt.Columns.Contains(tmpName)) Then '将此属性与datatable属性相比较,查看datatable是否包含了此属性;  
                        '判断此属性是否含有setter  
  
                        If (pr.CanWrite = False) Then  
                            Continue For  
                        End If  
  
                        Dim value As Object = dr(tmpName) '定义一个对象型的变量来保存列的值  
                        If (value.ToString <> DBNull.Value.ToString) Then '如果非空则赋给对象属性  
                            pr.SetValue(myturn, value, Nothing) '在运行期间通过反射,动态的访问一个对象的属性  
                        End If  
                    End If  
                Next  
                mylist.Add(myturn) '添加到集合   
            Next  
            Return mylist  
        End Function  
    End Class  
End Module  


【总结】

 

       泛型使用的地方很多,还需要多多琢磨。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值