Visual Studio 2010 和 .NET Framework 4 专题 - 3: Visual Basic 10 动态接口

接口是我们常用来处理对象之间共有特性的工具。使用接口,我们可以将一些无继承关系的对象联系起来,得到其共有的特性和行为。这也成为一种设计模式“适配器”(Adapter)的核心思想。

今天需要和大家分享的是一种动态接口的创新。刚才我们了解到,用接口实现了对共有某些特性的对象之间实现了连接,但有些对象,如派生于远古祖先的两个对象(如从 object 派生的 System.Windows.Forms.Control 和 System.Web.Security.WindowsIdentity),表面上看起来他们具备相当的无关性,但他们却仍然具备某些共同的地方,如上述两个对象,他们一个用来描述用户界面中的元,既控件,一个用来表示 Web 应用程序中基于 Windows 身份验证的用户设别信息,表面上他们是无关的,但可以发现,他们都具备一个共同特性,即 Name。如用接口来描述这个特性,就显得有些勉强。另外,某些基于动态语言运行时返回的数据类型,也存在这种情况,如何在这些无关性较大的对象之间建立起联系呢?

动态接口(Dynamic Interface)可以解决这些问题,他可以将对象在运行时转化为接口类型,然后对这个类型实例进行操作。它能够使得原本没有实现接口的两个或者多个对象“动态的”用接口联系起来。这正如扩展方法(Extension Methods)的思想一样。动态接口也被称为“鸭子类型”(Duck Type),是动态语言运行时的重要内容。

Visual Basic 10 将提供对动态接口的支持,对于以上两个对象,下面的代码可以对它们进行连接。

  1. Dynamic Interface IName
  2.     Public Property Name As String
  3. End Interface
  4. Public Sub Test()
  5.     Dim c As Control = GetControl()
  6.     Dim user As IIdentity = GetUser()
  7.     IName name = c
  8.     name.Name = "Hello!"
  9.     name = user
  10.     MessageBox.Show(name.Name)
  11. End Sub

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值