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

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条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 我在wordpress里安装Ultimate menber 插件之后进行测试,点击注册之后发现网页打不了
      • ¥20 问个简单的数据结构问题
      • ¥20 kinect 使用 unity 开发使用手势旋转相机
      • ¥20 一个关于人脸识别的实训报告
      • ¥50 LoopyCuts编译运行问题
      • ¥20 VS2019如何添加.mdf文件失败
      • ¥15 SeaTunnel多Transform配置问题
      • ¥15 消除字符串,求最短字符串长度
      • ¥20 有人做基于集员滤波的异常值处理相关的内容吗?(语言-matlab)
      • ¥30 matlab编程,用chatGPT帮助,但给出的code总是报错。