【一步一步了解你——泛型的应用(机房重构)】

【一步一步了解你——泛型的应用(机房重构)】,第1张

概述前言: 在自己还没有机房重构的时候,通过看别人的博客,就开始初步的了解了泛型,从最开始的登录,就开始使用的泛型,直到自己做到退卡的窗体时候,发现之前的自己的泛型并不对,但是找不到错误的原因,后来看了一个同学的博客,突然间有了灵感,最终的泛型应用成功。 核心:      ( 一)、什么是泛型      ·具有占位符的类、结构、接口和方法      ·泛型的参数只可以代表类,不能代表个别对象 自己理解 前言:@H_502_3@@H_502_3@ @H_502_3@在自己还没有机房重构的时候,通过看别人的博客,就开始初步的了解了泛型,从最开始的登录,就开始使用的泛型,直到自己做到退卡的窗体时候,发现之前的自己的泛型并不对,但是找不到错误的原因,后来看了一个同学的博客,突然间有了灵感,最终的泛型应用成功。
@H_502_3@@H_502_3@ 核心:@H_502_3@@H_502_3@ ( 一)、什么是泛型@H_502_3@@H_502_3@ @H_502_3@ ·具有占位符的类、结构、接口和方法@H_502_3@@H_502_3@ @H_502_3@ ·泛型的参数只可以代表类,不能代表个别对象@H_502_3@@H_502_3@@H_502_3@ @H_502_3@自己理解:是实体的集合,通过我们调试过程中,我们可以知道,泛型返回的是实体的集合。如图:@H_502_3@@H_502_3@@H_502_3@
@H_502_3@@H_502_3@@H_502_3@
@H_502_3@@H_502_3@@H_502_3@ (二)、泛型的优点@H_502_3@@H_502_3@ @H_502_3@@H_502_3@·处理速度快@H_502_3@——泛型的类型属于强类型@H_502_3@@H_502_3@
@H_502_3@@H_502_3@ @H_502_3@@H_502_3@·代码复用方便@H_502_3@--在某些情况下,减少代码的书写量@H_502_3@@H_502_3@
@H_502_3@@H_502_3@ @H_502_3@@H_502_3@·安全性能高@H_502_3@——体现在泛型指定使用的类型,提供保护的类型,提高性能@H_502_3@@H_502_3@ (三)、泛型的应用(以机房重构基础数据设定为例)@H_502_3@@H_502_3@ @H_502_3@首先:建立泛型类@H_502_3@@H_502_3@ @H_502_3@我们要使用泛型,必须先建立一个转换的类,以我的机房为例,我将这个类建在了D层下;如图@H_502_3@@H_502_3@
@H_502_3@@H_502_3@ 其代码如下:@H_502_3@@H_502_3@ @H_502_3@@H_502_3@
<span >'**********************************************' 文  件  名:Convert' 命名空间:DAL' 内       容:' 功       能:' 文件关系:' 作       者:杜娟' 小       组:XX' 生成日期:2016/4/27 20:52:27' 版  本  号:V1.0.0.0' 修改日志:' 版权说明:'**********************************************imports System.Reflection '为了使用PorpertyInfoPublic Class Convert    '将datatable转化为泛型集合        Public Shared Function convertToList(Of T As {New})(ByVal dt As Datatable) As IList(Of T)        '注意:convertToList(Of T As {New}) 这里的new是用来约束T的,必须有,不然new T的时候会出现错误            Dim myList As New List(Of T)   '定义最终返回的集合            Dim myTpye As Type = GetType(T) '得到实体类的类型名            Dim dr As DaTarow   '定义行集            Dim tempname As String = String.Empty   '定义一个临时变量            '遍历Datatable的所有数据行            For Each dr In dt.Rows            Dim myT As New T    '定义一个实体类的对象                Dim propertys() As PropertyInfo = myT.GetType().GetPropertIEs()  '定义属性集合                Dim Pr As PropertyInfo            '遍历该对象的所有属性                For Each Pr In propertys                tempname = Pr.name '将属性名称赋值给临时变量                    '检查Datatable是否包含此列(列名==对象的属性名)                     If (dt.Columns.Contains(tempname)) Then     '将此属性与datatable里的列明比较,查看datatable是否包含此属性                        '判断此属性是否有Setter                        If (Pr.CanWrite = False) Then   '判断此属性是否可写,如果不可写,跳出本次循环                            Continue For                    End If                    Dim value As Object = dr(tempname)  '定义一个对象型的变量来保存列的值                        If (value.ToString <> dbnull.Value.ToString) Then '如果非空,则赋给对象的属性                            Pr.SetValue(myT,value,nothing)    '在运行期间,通过反射,动态的访问一个对象的属性                        End If                End If            Next            myList.Add(myT)   '添加到集合            Next        Return myList   '返回实体集合        End FunctionEnd Class</span>
@H_502_3@第二:定义-转换-返回@H_502_3@@H_502_3@ @H_502_3@剩下的我们就是在自己要实现功能的这个D层@H_502_3@@H_502_3@ @H_502_3@1.定义一个泛型,2.添加泛型转换语句,3.最后返回泛型(注意代码中的最后三行代码)@H_502_3@@H_502_3@ @H_502_3@@H_502_3@
<span >imports System.Data.sqlClIEnt'**********************************************' 文  件  名:DBasicdata' 命名空间:DAL' 内       容:' 功       能:' 文件关系:' 作       者:杜娟' 小       组:XX' 生成日期:2016/5/18 8:06:32' 版  本  号:V1.0.0.0' 修改日志:' 版权说明:'**********************************************Public Class DBasicdata : Implements IDAL.IBasicdata    Dim helper As New sqlhelper    Public Function Show() As List(Of Entity.EBasicdata) Implements IDAL.IBasicdata.Show        Dim sql As String        Dim table As New Datatable '中间变量用于存储从数据库中 查找信息        '调用SQL语句查询        sql = "select * from T_Basicdata"        '调用sqlHlper类中的ExecSelect()方法来执行查询,并获取返回值        table = helper.ExecSelectNo(sql,CommandType.Text)        '定义泛型        Dim myList As New List(Of Entity.EBasicdata)        'table 转为泛型        myList = Convert.convertToList(Of Entity.EBasicdata)(table)        '返回泛型        Return myList    End Function</span>
@H_502_3@第三,实体的建立@H_502_3@@H_502_3@ @H_502_3@在转泛型的过程中,一个非常重要的环节——实体层的定义@H_502_3@@H_502_3@ @H_502_3@·实体层的属性和方法的定义要和数据库中的数据类型和字段相同(这个是关键)@H_502_3@@H_502_3@ @H_502_3@@H_502_3@ 下面是我的实体层:
@H_502_3@@H_502_3@ @H_502_3@@H_502_3@
<span > '**********************************************' 文  件  名:EBasicdata' 命名空间:Entity' 内       容:' 功       能:' 文件关系:' 作       者:杜娟' 小       组:XX' 生成日期:2016/5/3 10:46:32' 版  本  号:V1.0.0.0' 修改日志:' 版权说明:'**********************************************Public Class EBasicdata    Private _Rate As Integer    Private _TmpRate As Integer    Private _UnitTime As Integer    Private _limitedTime As Integer    Private _PrepareTime As Integer    Private _limitedCash As Integer    Private _head As String    Public Property Int_Rate() As Integer        Get            Return _Rate        End Get        Set(value As Integer)            _Rate = value        End Set    End Property    Public Property Int_TmpRate() As Integer        Get            Return _TmpRate        End Get        Set(value As Integer)            _TmpRate = value        End Set    End Property    Public Property Int_UnitTime() As Integer        Get            Return _UnitTime        End Get        Set(value As Integer)            _UnitTime = value        End Set    End Property    Public Property Int_limitedTime() As Integer        Get            Return _limitedTime        End Get        Set(value As Integer)            _limitedTime = value        End Set    End Property    Public Property Int_PrepareTime() As Integer        Get            Return _PrepareTime        End Get        Set(value As Integer)            _PrepareTime = value        End Set    End Property    Public Property Int_limitedCash() As Integer        Get            Return _limitedCash        End Get        Set(value As Integer)            _limitedCash = value        End Set    End Property    Public Property Chr_head() As String        Get            Return _head        End Get        Set(value As String)            _head = value        End Set    End PropertyEnd Class</span>
(仅供大家参考)

@H_502_3@
@H_502_3@@H_502_3@ 总结:@H_502_3@@H_502_3@ 学习一个新的知识,一开始不可能会全懂,只有在我们经历过错误,自己解决了问题,才是真正认识了他,了解了他,才会让我们成长!@H_502_3@@H_502_3@ 总结

以上是内存溢出为你收集整理的【一步一步了解你——泛型的应用(机房重构)】全部内容,希望文章能够帮你解决【一步一步了解你——泛型的应用(机房重构)】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1266456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存