.Net中的早期绑定和后期绑定(一)

   “绑定”一词在生活是非常常见,像手机绑定、邮箱绑定等等。在.Net中也存在着“绑定”,比如说类型的绑定。在进行机房重构的过程中遇到一个特别有意思的现象:B层调用工厂层和接口使其与D层解耦,因此在B层类中的方法都写了这样的语句,以UserBLL类为例: 

    Public Function Login(enUser As Entity.UserEntity) As DataTable
        '实例化工厂类CreateUser
        Dim createuser As New Factory.CreateUser
        '通过工厂动态地创建D层中UserImpl
        Dim iuser = createuser.ProduceUser
	'返回DataTable对象
        Return iuser.SelectUser(enUser)
   End Function

     由于在UserBLL类中有多个方法,每个方法都存在"Dim createuser as new Factory.CreateUser"和"Dim iu=createuser.ProduceUser"这两行代码,这样就使用了重复的代码。于是乎,我把重复使用的这两句代码写到方法体之外了, 
    Dim createuser As New Factory.CreateUser
    '通过工厂动态地创建D层中UserImpl
    Dim iuser = createuser.ProduceUser   
    ''' <summary>
    ''' 验证登录信息
    ''' </summary>
    ''' <param name="enUser">实体UserEntity</param>
    ''' <returns>DataTable</returns>
    ''' <remarks></remarks>
    Public Function Login(enUser As Entity.UserEntity) As DataTable
        Return iuser.SelectUser(enUser)
    End Function

      原以为这样和之前没有差别,可是在写其他方法的时候,出现了问题。在方法中使用iu时,竟然找不到它的方法了,晕....但是当把重复的这两句代码写到方法里面就能找到,很纳闷这件事儿呢,有图为证:

    

     

       

    两句一模一样的代码写在不一样的位置引起的效果确实不一样的,有木有感到很有意思。为什么写到方法体之外后在方法中使用iuser时,找不到它的属性和变量呢?针对这个问题,自己做了很多方法去解决,经过我的各种尝试,终于找到了一种解决方法,如图:

      

    对比第二张图和第三张图,同样是写在方法之外的两行代码,只是在“Dim iu=...”的基础上,加上了"Dim iu as IDAO.IUser=...",我们会发现在方法调用iu时能找到它的属性和方法了,那么问题来了,这又是为什么呢?上周日,文斌和我就这个问题讨论了好长一段时间,然后又查询了好多资料,终于皇天不负有心人。经过一个下午的鏖战,终于找到了问题的关键所在,也就是我们要说的早期绑定和后期绑定。请看下一篇文章.Net中的早期绑定和后期绑定(二)

    PS:大家可以做一下这个小实验,特别有趣!


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 68
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 68
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值