3

我在当前项目中使用网络浏览器,目前我在设计模式下使用它以使其可编辑等。我目前使用的代码是:

WebBrowser.Document.DomDocument as IHTMLDocument2

IHTMLDocument2、3 或 4 实际上是什么?我还发现,在识别文档中的当前选择范围时,range.text.replace 方法的工作方式与 string.replace 不同。

谁能向我解释一下 IHTMLDocuments 和 IHTMLTxtRange 的基本功能吗?

4

1 回答 1

2

IHTMLDocument 是一个接口,它本质上是一个“牢不可破”的契约,表示实现它的对象将提供什么。

在迁移到新版本的代码时更改界面会破坏该合同,进而破坏依赖该合同的代码。

假设您创建:

public interface IMyInterface {
      public int Property1 { get;  set; }
}

一年后,您需要添加 Property2,但您无法更改界面。因此,一种解决方法是创建:

public interface IMyInterface2 {
    public int Property2 { get;set; }
} 

然后使用您正在实施 IMyInterface 的旧类:

public class MyObject : IMyInterface, IMyInterface2 {
    public int Property1 { get {} set {} }
    public int Property2 { get {} set {} }
}

这样您就不会破坏旧合同,但可以在代码中使用新接口,例如:

if (obj is IMyInterface) {
   Console.WriteLine(((IMyInterface)obj).Property1);

   if (obj is IMyInterface2) {
      //more
   }
}

这就是微软所做的。IHTMLDocument 所在的 mshtml 库是一个 COM 库,COM 严重依赖接口。因此,随着库的发展,微软添加了越来越多的接口来公开更新的功能/代码。

IHTMLTxtRange 是更常用的TextRange对象的接口。它公开了一系列用于解析文本“片段”或“范围”的功能。

http://www.webreference.com/js/column12/trmethods.html

于 2009-05-08T09:33:55.993 回答