可以在VB.NET中追溯实现接口吗?

时间:2012-07-06 19:14:38

标签: vb.net interface metaprogramming

是否可以定义一个接口(例如MyClass Implements MyInterface),其接口/属性定义已经与第三方(或本机)类中定义的某些方法/属性匹配?

例如,DataRow类有许多属性/方法使其“像行一样”。如果我想实现一个接口(即IRowLike),该接口定义了本机DataRow类中已存在的某些方法和属性(我无法直接触摸或扩展),该怎么办?我只是希望类在运行时同意它确实遵守某些接口。

接口提供了一个穷人的“鸭子打字”版本。一旦我有一组所有都遵守给定接口的类,我就可以针对该接口定义扩展方法,并且所有支持该接口的类都会立即获得新的行为。我知道想要追溯应用第三方类的接口似乎很奇怪,但它肯定会让我们用更少的代码做更多的事情。

1 个答案:

答案 0 :(得分:2)

这在.Net中是不可能的。类型定义它在编译时在元数据中实现的接口,并且其定义在运行时不可更改。可以在运行时生成实现特定接口但不改变现有类型的类型

但有一些替代方案。在VB.Net中,你可以简单地选择在类型上使用后期绑定并以这种方式访问​​接口方法(或者在C#中使用dynamic)当然,缺点是代码不是静态可验证的。