泛型的使用总结

      泛型是在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象---百度百科。其实通过对泛型实际的使用来看,泛型实际也就是自己规定的一个转化机制,转化的对象是一个数据集合,如一个Datatable或一个视图View,而转化的目标是一个实体类或其他类型的数据集合,泛型就是这中间的一个转化机制。


List<int> list = new List<int>();

list.Add(1);

list.Add(2);
list.Add(3);
foreach (int item in list)
{
    Console.WriteLine(item);
}
      这是一个很简单的泛型,List<int> list = new List<int>();这里的作用是实例化出一个list类型为int的类型,下面的就是list类型的参数,它包括1、2、3这些参数,最下面的一个循环输出这3个参数,通过这个结构就可以大致理解泛型的使用特点。

      泛型的好处:

      1.泛型允许我们创建类,结构,接口和方法模板,这些模板用于在运行时定义具体的类型,是面向对象设计中的一个重要机制。

      2.泛型提供了类型安全,提供一组类型的集合体,取代强制转换。

      3.泛型的值类型避免了装箱和拆箱的损耗,提高系统的运行效率。

      4.泛型通过转换数据表,将所需的Datatable转化为相应的实体类,以实现系统各个层之间的数据传递,这样就避免了对数据库结构的泄漏,增强了安全性。

      在机房重构中使用泛型就是一个扩大了的简单结构,如下:

'/**********************************
'类名称:EntityHelper
'命名空间:JIFANG.ENTITY
'创建时间:2015/6/6 16:55:47
'作者:王泽
'小组:
'修改时间:
'修改人:
'版本号:v1.0.0
'***********************************/
Imports System.Collections.Generic
Imports System.Reflection
Public Class GenericList
    '定义一个全局的方法,返回一个IList接口
    Public Shared Function ConvertToList(Of T As New)(dt As DataTable, ts As IList(Of T))
        '获得T的类型      
        Dim type As Type = GetType(T)
        '定义一个临时变量      
        Dim strTemp As String = String.Empty
        '遍历表中所有行数      
        For Each dr As DataRow In dt.Rows
            '定义类型变量act获取动态创建对象T的类型。
            Dim act As T = If((Nothing Is Nothing), Activator.CreateInstance(Of T)(), Nothing)

            Dim propertys As PropertyInfo() = act.[GetType]().GetProperties()
            '定义array变量,接收propertys中含有的属性,并提供对属性propertys元数据访问      
            Dim array As PropertyInfo() = propertys
            Dim intCount As Integer = 0
            '遍历所有对象属性      
            While intCount < array.Length 'length表示所有维数中元素的总和      
                'pr表示元素中含有的属性,并提供对数据访问      
                Dim pr As PropertyInfo = array(intCount)
                strTemp = pr.Name
                '列名=对象的属性名        
                If dt.Columns.Contains(strTemp) Then
                    '判断此属性是否设置函数      
                    If pr.CanWrite Then   '该属性是否可写      
                        Dim value As Object = dr(strTemp)
                        '如果非空,则赋值给对象的属性      
                        If value IsNot DBNull.Value Then
                            '设置对象的属性值。      
                            pr.SetValue(act, value, Nothing)
                        End If
                    End If
                End If
                intCount += 1
                Continue While
            End While
            '添加对象到泛型集合中      
            ts.Add(act)
        Next
        '返回泛型集合
        Return ts
    End Function
End Class
      通过泛型可以很方便的传递数据,避免了对数据库安全的威胁性,同时也可以看出泛型也是面向对象设计的一个具体应用,封装了一个转换的方法来提供数据的转换,这也是一种思想上的升华。


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值