1

我有一个接口。由于新的要求,接口现在有一个可以实现的方法。

public static string ToEntityConnectionString(this IEnvironmentProvider provider)
//Converts a standard connection string to EntityFramework compatible string

我可以将接口转换为抽象类,尽管我现在将自己限制为这个类作为继承类。虽然,这个接口目前仅用于依赖注入。

经过一番思考,我意识到我可以通过扩展方法将功能附加到接口。这似乎是真的。向接口添加实现?做这样的事情是否被认为是一种不好的做法?如果是这样,为什么?考虑到这种情况,应该改用什么?

4

2 回答 2

6

当您在接口上有扩展方法时,您不应该将其视为向该接口添加实现。它只是一个接受接口的静态辅助方法,并根据接口的公开成员完成所有工作。这是您在 OO 设计中经常看到的东西;这并不违反 OO 原则。“扩展”部分只是让它看起来更漂亮,更容易找到/输入。如果您开始真正将扩展方法视为接口的一部分,您将遇到更大的问题,因为事实并非如此。

于 2012-04-13T19:12:51.457 回答
1

我将扩展方法视为简单的辅助方法,类的用户可以通过复制粘贴代码轻松完成。如果可以在不访问非公共属性的情况下执行该功能,那么是否真的提供了任何新的东西来证明将其添加到接口是合理的,那么没有。

于 2012-04-13T19:06:58.650 回答