虽然这个问题特定于IQueryable
设计,但我遇到了许多类和接口设计,其中类或接口定义明确定义了IChildInterface
和IParentInterface
尽管IChildInterface : IParentInterface
喜欢:
class MyClass : IChildInterface, IParentInterface
问题1 :在什么情况下需要这样做?
问题2 :如果为IChildInterface
和IParentInterface
定义了具有相同名称的扩展方法,那么哪个编译器将解析为?
答案 0 :(得分:0)
Eric Lippert在他的博客中写了你的第一个问题(标题是“这么多界面!”):https://blogs.msdn.microsoft.com/ericlippert/2011/04/04/so-many-interfaces/
他基本上说不需要添加接口及其基类型,但提到:
也许是因为他们认为这样做会使代码更容易 理解和更多自我记录。
对于扩展方法,选择最近的封闭命名空间中的方法,或者作为C#语言规范说明“扩展方法调用”:
从最近的封闭命名空间声明开始,继续 每个封闭的命名空间声明,并以。结尾 包含编译单元