除 Object
类型外,动态对象提供了另一种在运行时后期绑定到对象的方法。 动态对象通过使用命名空间中 System.Dynamic 定义的动态接口在运行时公开属性和方法等成员。 可以使用命名空间中的 System.Dynamic 类来创建使用与静态类型或格式不匹配的数据结构的对象。 还可以使用在动态语言(如 IronPython 和 IronRuby)中定义的动态对象。 有关如何创建动态对象或使用动态语言定义的动态对象的示例,请参阅 演练:创建和使用动态对象, DynamicObject或 ExpandoObject。
Visual Basic 使用 IDynamicMetaObjectProvider 接口绑定到动态语言运行时和动态语言(如 IronPython 和 IronRuby)中的对象。 实现 IDynamicMetaObjectProvider
接口的类的示例包括 DynamicObject 类和 ExpandoObject 类。
如果对实现 IDynamicMetaObjectProvider
接口的对象进行后期绑定调用,则 Visual Basic 会使用该接口绑定到动态对象。 如果对未实现 IDynamicMetaObjectProvider
接口的对象进行后期绑定调用,或者对接口的调用 IDynamicMetaObjectProvider
失败,则 Visual Basic 将使用 Visual Basic 运行时的后期绑定功能绑定到对象。