【机房重构】泛型

    xiaoxiao2021-03-25  56

    【背景】

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

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

    【为什么使用泛型】

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

    【应用案例】

     

    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

    【总结】

     

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

    转载请注明原文地址: https://ju.6miu.com/read-37297.html

    最新回复(0)