Heroin_s 2018-04-22 10:20 采纳率: 33.3%
浏览 1395
已采纳

C#中父类接口中包含子类属性的疑惑

一个IHtmlDocument接口继承于另一个IHtmlContainer接口,而IHtmlContainer继承于基接口IHtmlDomObject,基接口IHtmlDocument中竟然还声明了一个 IHtmlDocument的属性
IHtmlDocument

{
get;
}
,我是第一次看见这种模式,这是一种设计结构吗?这种继承不是一个死循环吗?

public interface IHtmlDomObject
{
object RawObject
{
get;
}

/// <summary>
/// 获取 DOM 对象的原始 HTML,如果不支持,返回null
/// </summary>
[EditorBrowsable( EditorBrowsableState.Advanced )]
string RawHtml
{
  get;
}
/// <summary>
/// 获取 DOM 对象所属的文档
/// </summary>
IHtmlDocument Document
{
  get;
}

}

public interface IHtmlContainer : IHtmlDomObject
{

/// <summary>
/// 获取所有子节点
/// </summary>
/// <returns>容器的子节点</returns>
IEnumerable<IHtmlNode> Nodes();


/// <summary>
/// 获取用于同步的对象
/// </summary>
object SyncRoot
{
  get;
}

}

///
/// 定义一个 HTML 文档
///
public interface IHtmlDocument : IHtmlContainer
{

/// <summary>
/// 获取文档内容的统一资源位置
/// </summary>
Uri DocumentUri
{
  get;
}

/// <summary>
/// 获取文档的声明信息,可以是xml声明,也可以是DTD。如果不被支持,则返回null。
/// </summary>
string DocumentDeclaration
{
  get;
}

/// <summary>
/// 获取文档碎片的管理器,如不支持文档碎片,请返回 null 。
/// </summary>
IHtmlFragmentManager FragmentManager
{
  get;
}

/// <summary>
/// 获取修改 DOM 结构的修改器,如不支持修改 DOM 结构,请返回 null 。
/// </summary>
IHtmlDomModifier DomModifier
{
  get;
}

/// <summary>
/// 获取该文档应当遵循的 HTML 规范
/// </summary>
HtmlSpecificationBase HtmlSpecification
{
  get;
}

}


  • 写回答

5条回答 默认 最新

  • 单反的3232 2018-04-22 11:13
    关注

    类中定义一个属性是类本身 说明此类的一个具体的实例包含另一个相同类的实例 比如有一节火车车厢对象中有一个属性指向另一节火车车厢对象;
    ihtmldocument 继承ihtmlcontainer说明ihtmldocument 是一个container ,那么实现iHTML document接口的子类实例就可以contain另一个
    ihtmldocuemnt子类实例。
    结构设计模式中合成模式中子类composite就有指向父接口的属性

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵