3

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

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

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

4

1 回答 1

2

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

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

于 2012-07-06T19:18:05.443 回答