当前位置:  开发笔记 > 编程语言 > 正文

使用接口组合的奇怪的界面多态性

如何解决《使用接口组合的奇怪的界面多态性》经验,为你挑选了1个好方法。



1> Drew Noakes..:

这段代码绝对没有错(前提是它不会让你的用户感到困惑),而且它不是一个我熟悉的任何名字的模式. CanDoThisAndThat实现两个接口,因此客户端可以以任何一种方式使用它.

.NET允许以这种方式实现接口 - 称为显式接口实现.

在以下情况下显式接口实现很有用:

    两个接口具有相同的成员定义

    您需要实现一个接口,但不希望公开特定成员可用于未使用接口类型声明引用的客户端代码

.NET框架中的案例2的示例是ICollection.SyncLock. List实现ICollection但是以下代码将无法编译,因为该成员故意被"隐藏",因为BCL的设计者不再提倡以这种方式锁定集合:

List list = new List();

lock (list.SyncRoot) // compiler fails here
{
    // ...
}


此格式的任何遗留代码仍然有效,因为引用的类型是ICollection显式的:

ICollection list = new List();

lock (list.SyncRoot) // no problem
{
    // ...
}

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有