Использование IHTMLDocuments 1, 2, 3 и 4 - PullRequest
3 голосов
/ 08 мая 2009

Я использую веб-браузер в своем текущем проекте, и в настоящее время я использую его в режиме разработки, чтобы сделать его редактируемым и т. Д. Код, который я в настоящее время использую:

WebBrowser.Document.DomDocument as IHTMLDocument2

Что на самом деле является IHTMLDocument2, 3 или 4? Я также обнаружил, что при определении текущего диапазона выбора в документе метод range.text.replace не работает так же, как и string.replace.

Кто-нибудь может мне объяснить основные функции IHTMLDocuments и IHTMLTxtRange, пожалуйста?

1 Ответ

2 голосов
/ 08 мая 2009

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
   }
}

Так вот, что сделала Microsoft. Библиотека mshtml, в которой находится IHTMLDocument, является библиотекой COM, а COM сильно зависит от интерфейсов. Так как библиотека развивалась, Microsoft добавляла все больше и больше интерфейсов для предоставления новых функций / кода.

IHTMLTxtRange - это интерфейс для наиболее часто используемого TextRange объекта. Он предоставляет множество функций для разбора текста «Фрагменты» или «Диапазоны».

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

...