我有一个界面.由于新的要求,界面现在有一个可以实现的方法.
public static string ToEntityConnectionString(this IEnvironmentProvider provider)
//Converts a standard connection string to EntityFramework compatible string
Run Code Online (Sandbox Code Playgroud)
我可以将接口转换为Abstract类,虽然我现在将自己限制为此类作为继承类.虽然,此接口目前仅用于依赖注入.
经过一番思考,我意识到我可以通过Extension方法将功能附加到接口.这似乎很好.在接口上添加实现?做这样的事情被认为是不好的做法吗?如果是这样,为什么?考虑到这种情况,应该使用什么呢?
如果在接口上有扩展方法,则不应将其视为向该接口添加实现.它只是一个带有接口的静态助手方法,并且基于接口的公开成员完成所有这些工作.这是你在OO设计中看到的很多东西; 这与OO原则并不相反."扩展"部分只是让它看起来更漂亮,更容易找到/输出.如果您开始将扩展方法视为接口的一部分,那么您将遇到更大的问题,因为事实并非如此.